当前位置: 首页 > 科技观察

【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现

时间:2023-03-13 00:10:20 科技观察

[字符串处理算法]最长连续字符及其出现次数的算法设计及C代码实现。例如“123444445”中最长的连续字符为4,连续出现的次数为5;“abcddef”中最长的连续字符为d,连续出现的次数为2;该字符为a,其连续出现的次数为1。2.算法设计我们可以采取将字符串中的每个字符逐一比较的方法,得到最长的连续字符和连续出现的次数。程序总体流程如图1所示。图1程序总体流程3.特殊流程注意事项在编写程序的过程中,我们需要考虑输入字符串的长度和格式,如:1.如果输入的字符串中包含空格,那么我们只处理空格之前的字符串。2、输入的字符串可以包含数字、字母和一些特殊字符,但不能包含汉字。4.程序代码/***************************************************************************Copyright(C)2016,ZhouZhaoxion.**文件名:LongestContinChars.c*文件ID:无*内容概要:求一个字符串中最长的连续字符及其编号*其他说明:例如“aabbbc”的最长连续字符为b,编号为3*当前版本:V1.0*作者:周兆雄*完成日期:20160316******************************************************************************/#include//重新定义数据typetypedefsignedcharINT8;typedefintINT32;typedefunsignedintUINT32;//函数声明voidGetLongestContinChars(INT8*pszInputStr);/*******************************************************************************函数说明:主要函数*输入参数:无*输出参数:无*返回值:0-执行成功Others-执行失败*其他说明:无*修改日期版本号修改内容修改*--------------------------------------------------------------------*20160316V1.0ZhouZhaoxion创建****************************************************************************/INT32main(){INT8szInputStr[100]={0};UINT32iPosFlag=0;printf("请输入字符串:\n");scanf("%s",szInputStr);printf("InputStr=%s\n",szInputStr);//先判断是否有汉字for(iPosFlag=0;iPosFlagiMaxLen)//获取连续出现最多的字符和出现的次数出现{iMaxLen=iCharCount;cLongestContinChar=pszInputStr[iPosFlag];}}printf("连续出现次数最多的字符是:%c\n连续出现的次数是:%d\n",cLongestContinChar,iMaxLen);}5.程序测试我们将编写好的程序“LongestContinChars.c”上传到Linux机器上,使用“gcc-g-oLongestContinCharsLongestContinChars.c”命令编译程序,生成“LongestContinChars”文件,对程序进行详细测试。1、当输入字符串为“ababbba”时,程序运行如下:请输入字符串:ababbbaInputStr=ababbba连续出现次数最多的字符为:b连续出现次数为:32当输入字符串为“123321”,程序运行如下:请输入字符串:123321InputStr=123321连续出现次数最多的字符为:3连续出现次数为:23当输入字符串为“!@##$%”时,程序运行如下:Pleaseinputthestring:!@##$%InputStr=!@##$%连续出现次数最多的字符为:#连续出现的次数为:24.当输入字符串为“abcdef”时,程序运行如下:Pleaseinputthestring:abcdefInputStr=abcdefThemostconsecutiveoccurrence字符为:a连续出现的次数为:15当输入字符串为“our123”时,程序运行如下:Pleaseinputthestring:our123InputStr=our123我们的123有汉字cter,请查收!,我们可以考虑对需求做如下扩展:1.不区分大小写字母,即如果输入字符串为“AAAaaa”,那么程序输出的最长连续字符为A或a,则出现次数为6次。2、字符串中没有不能出现汉字的限制,即如果输入的字符串是“窝窝头123”,程序会输出最长的连续字符为窝,出现次数为2次。【本文本文为专栏作家周兆雄原创,作者微信公众号:周氏逻辑(logiczhou)】点此阅读更多本作者好文