在字符串中找出連續最長的數字串
來源:程序員人生 發布時間:2015-05-08 08:33:16 閱讀次數:3658次
題目描寫
請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;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈