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

题目描述

请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:数字串只需要是数字组成的就可以,并不要求顺序,,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!

样例输入

abcd12345ed125ss123058789

abcd12345ss54761

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

接口说明

函数原型:

Continumax(char**pOutputstr,char*intputstr)

输入参数:

输出参数:

返回值:连续最长的数字串的长度

注意的地方是指向指针的指针,上个代码:

#include<iostream>//#include<string>//#include<algorithm>//#include<cmath>//#include<vector>//#include<stack>//#include<iomanip>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(pOutputstr==NULL || intputstr==NULL)return 0;int i,k,counti,maxcount,starti,maxstart;int slen=strlen(intputstr);*pOutputstr=(char *)malloc(slen+1);//cout<<slen<<endl;k=0;maxcount=0;while(k<slen){for(i=k;i<slen;i++){if(intputstr[i]>='0' && intputstr[i]<='9'){starti=i;break;}}if(i==slen) break;counti=0;for(i=starti;i<slen;i++)if(intputstr[i]>='0' && intputstr[i]<='9'){counti++;}else{if(maxcount<=counti){maxcount=counti;maxstart=starti;}break;}if(i==slen && maxcount<=counti){maxcount=counti;maxstart=starti;break;}k=i;}//cout<<maxcount<<" "<<maxstart<<endl;if(maxcount==0) {(*pOutputstr)[0]=0;return 0;}for(i=maxstart;i<maxcount+maxstart;i++)(*pOutputstr)[i-maxstart]=intputstr[i];(*pOutputstr)[i-maxstart]=0;//cout<<*pOutputstr<<endl;return maxcount;}int main(){char *ss=NULL;Continumax(&ss, "hgjfgjfgjh");//return 0;}

坚韧是成功的一大要素,只要在门上敲得够久够大声,终会把人唤醒的。

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

相关文章:

你感兴趣的文章:

标签云: