第25题:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
#include "stdafx.h"
#include<vector>
#include<stack>
#include<iostream>
#include<ctime>
#include <functional>
#include<iostream>
using namespace std;
namespace MS100P_25
{
int continumax(char* outputstr, char*inputstr)
{
if (inputstr == NULL)
{
cout << "null string,error" << endl;
return 0;
}
int i = 0, maxLen = 0, maxBegin=0, j = 0;
while (inputstr[i] != '\0')
{
while (!isdigit(inputstr[i])&&inputstr[i]!='\0') i++;
while (isdigit(inputstr[i+j])) j++;
if (j > maxLen)
{
maxLen = j; //找到当前最大长度数字串时,更新长度和起始位置
maxBegin = i;
}
i = i + j;
j = 0;
}
for (i = 0; i < maxLen; i++) //复制最大长度数字串到输出字符串中
outputstr[i] = inputstr[maxBegin + i];
outputstr[i] = '\0';
}
void test()
{
char outStr[100];
char* str1 = "abcd12345ed125ss123456789";
cout << str1 << endl;
continumax(outStr, str1);
cout << outStr << endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
MS100P_25::test();
return 0;
}
运行结果: