您的位置:首页 > 其它

在字符串中找出连续最长的数字串

2014-12-18 21:53 260 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐