程序员人生 网站导航

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

栏目:综合技术时间:2015-05-08 08:33:16

题目描写

 

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

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

样例输入

abcd12345ed125ss123058789

abcd12345ss54761

 

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

 

 

接口说明

函数原型:

   unsignedint Continumax(char** pOutputstr,  char* intputstr)

输入参数:
   char* intputstr  输入字符串;

输出参数:
   char** pOutputstr连续最长的数字串,如果连续最长的数字串的长度为0,应当返回空字符串;如果输入字符串是空,也应当返回空字符串;  

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


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

#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; }


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐