#include <stdlib.h>
#include <iostream>
#include "oj.h"
using namespace std;
/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
函数原型:
unsigned int Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串
pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放
返回值:
连续最长的数字串的长度
*/
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
if (intputstr == NULL)
{
cerr<<"输入参数有问题"<<endl;
}
int max = 0;
int pos =0;
size_t tempMax =0;
size_t tempPos =0;
char *p = intputstr;
bool flag =0;//标记第一个数字
int len =0;
while (*p != '\0')
{
if (*p <='9' && *p >= '0')
{
if (flag == 0)//是第一个数字
{
flag = 1;
tempPos = len;
}
tempMax++;
}
else
{
if (tempMax >= max)
{
max = tempMax;
pos = tempPos;
}
tempMax = 0;
flag = 0;
}
p++;
len++;
}
if (tempMax >= max)
{
max = tempMax;
pos = tempPos;
}
*pOutputstr = (char *)malloc(sizeof(char)*(max +1));
memcpy_s(*pOutputstr,(max +1),intputstr+pos, max);
(*pOutputstr)[max] = '\0';
return max;
}
int main()
{
char* intputstr = "" ;
char *pOutputstr = NULL;
unsigned int nLength = Continumax(&pOutputstr, intputstr);
cout<< nLength <<endl;
cout<<pOutputstr<<endl;
free(pOutputstr);
return 0;
}