题目要求:
写一个函数,它的原型是int ContinueMax(char *outputStr,char *inputStr);
功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputStr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给inputStr后,函数将返回9,outputStr所指的值为123456789.
参考链接:http://blog.youkuaiyun.com/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;
}