算法学习十一----连续最长的数字串

来源:互联网 发布:samba的端口号 编辑:程序博客网 时间:2024/06/13 06:27
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
算法思路如下:
1、逐个字符遍历该字符串,当还没有到达字符串的结束时,判断当前字符是否是数字,若是数字,则进行第二步,否则继续遍历
2、继续判断下一字符,直到当前字符不是数字,并记录下数字字符的个数,与之前的数字字符做比较,如果当前数字个数较多,则更新最大值

算法伪代码如下:

while not to the end     reset tempSum     if '0'<= *c <= '9'          then while not to the end and '0' <= *c <= '9'               add tempSum               go to next char     if tempSum > maxCount          then update maxCount     go to next char

C++实现

int ContinuMaxNumStr(const char *c){    int maxCount = 0;    int tempSum = 0;    //while not to the end    while(*c != '\0')    {        //reset tempSum        tempSum = 0;        //if '0'<= *c <= '9'        if(*c>='0' && *c<='9')        {            //then while not to the end and '0' <= *c <= '9'            while((*c != '\0') && (*c>='0' && *c<='9'))            {                //add tempSum                ++tempSum;                //go to next char                ++c;            }            //if tempSum > maxCount            if(tempSum > maxCount)            {                //then update maxCount                maxCount = tempSum;            }        }        //go to next char        ++c;    }    return maxCount;}


0 0
原创粉丝点击