字符串中找出最长的数字串 【微软面试100题 第二十五题】

题目要求:

  写一个函数,它的原型是int ContinueMax(char *outputStr,char *inputStr);

  功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputStr所指内存。

  例如:"abcd12345ed125ss123456789"的首地址传给inputStr后,函数将返回9,outputStr所指的值为123456789.

  参考链接:http://blog.csdn.net/v_july_v/article/details/6870251

题目分析:

  用max记录最长的数字串,pStart记录该数字串的第一个字符地址;从inputStr的第一个字符开始到结束不断更新max和pStart.

代码实现:

#include <iostream>



using namespace std;



int ContinueMax(char *outputStr, char *inputStr);



int main(void)

{

    char *inputStr = "abcd12345ed125ss123456789";

    char outputStr[100] ={0};



    int len = ContinueMax(outputStr,inputStr);

    cout << "最长数字串为:" << outputStr << "  长度为:" << len << endl;

    return 0;

}

int ContinueMax(char *outputStr, char *inputStr) 

{

    int len = 0;

    char * pStart = NULL;

    int max = 0;



    if(inputStr==NULL || outputStr==NULL)

        return 0;

    while(1) 

    {

        if(*inputStr >= '0' && *inputStr <='9') 

        {

            len ++;

        } 

        else 

        {

            if(len > max) 

            {

                pStart = inputStr-len;

                max = len;

            }

            len = 0;

        }

        if(*inputStr++=='\0') 

            break;

    }

    for(int i=0; i<max; i++)

        *outputStr++ = *pStart++;

    *outputStr = '\0';

    return max;

}
View Code

你可能感兴趣的:(字符串)