您的位置:首页 > 编程语言 > C语言/C++

【C++】在字符串中找出连续最长的数字子串

2015-03-04 11:09 441 查看
/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
函数原型:
unsigned int Continumax(char** pOutputstr,  char* intputstr)
输入参数:
char* intputstr  输入字符串
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串"",而不是NULL,如果输入字符串为空,也返回空字符串""
返回值:
连续最长的数字串的长度
*/

#include <iostream>
#include <cstring>
using namespace std;

unsigned int Continumax(char** pOutputstr, char* intputstr)
{
if (!intputstr)       //输入字符串为空
{
*pOutputstr = "";
return 0;
}

int len = strlen(intputstr);
char *Outstr = new char[len + 1];

int i = 0, begin = 0, maxnum = 0, num;
while (intputstr[i] != '\0')  //找出字符串中最长数字字串,记录其在输入字符串中的起始位置begin及长度maxnum
{
num = 0;
while (intputstr[i] >= '0'&&intputstr[i] <= '9')
{
num++;
i++;
}
if (num >= maxnum)
{
maxnum = num;
begin = i - maxnum;
}
i++;
}

if (maxnum == 0)  //输入字符串中无数字
{
*pOutputstr = "";
return 0;
}

for (i = 0; i < maxnum; i++)
Outstr[i] = intputstr[begin + i];
Outstr[i] = '\0';

*pOutputstr = Outstr;
return maxnum;
}

void main()
{
char *intputstr = "abcd12345ed234567890ss12345678";
//char *intputstr = NULL;
char *pOutputstr = NULL;
unsigned int Length = Continumax(&pOutputstr, intputstr);
cout << Length << ',' << pOutputstr << endl;
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: