天天看点

找出连续最长数字串python_找出连续最长的数字串(百度面试)

int maxContinuNum(const char*inputstr.char*outputstr)功能:

在以‘\0’结尾的字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参

数outputstr所指内存。不能用strlen之类的库函数。

#include

#include

using namespace std;

bool isdigital(char p){

if(p>='0'&&p<='9')

return true;

return false;

}

int maxContinuNum(const char* inputstr,char* outputstr){

int len=0;//每次的连续数

int maxlen=0;//最大的连续数

char* start=NULL;//记录最大连续数指针开始的位置

if(*inputstr=='\0')

return 0;

while(*inputstr!='\0'){

while(*inputstr!=0&&isdigital(*inputstr)){

len++;

inputstr++;

}

if(len>maxlen){

maxlen=len;

start=(char*)(inputstr-maxlen);

}

len=0;

if(*inputstr!='\0')

inputstr++;

}

for(int i=0;i

*(outputstr++)=*(start++);

cout<

return maxlen;

}

int main(){

char *str="1234asdf234211jjl111122223312j";

char *str1=(char*)malloc(100*sizeof(char));

memset(str1,0,100);//如果没有这个操作,str1字符串就找不到正确的结束符,输出会出现乱码

int str_len;

str_len=maxContinuNum(str,str1);

cout<

<

system("pause");

return 1;

}

另一种好的解决方法:

#include

int Findmaxlen(char *input,char *output);

void main()

{

char input[]="abc123def123456ee123456789dd";

char output[50]={0};

int maxlen;

maxlen=Findmaxlen(input,output);

printf("the str %s\n",output);

printf("the maxlen is %d \n",maxlen);}

int Findmaxlen(char *input,char *output)

{char *in=input,*out=output,*temp,*final;

int count=0,maxlen=0,i;

while(*in!='\0')

{

if(*in>='0'&&*in<='9')

{

count=0;

for(temp=in;*in>='0'&&*in<='9';in++)

count++;

if(maxlen

{

maxlen=count;

final=temp;

}//if

}//if

in++;

}//while

for(i=0;i

*out++=*final++;

*out='\0';

return maxlen;

}

分享到:

找出连续最长数字串python_找出连续最长的数字串(百度面试)
找出连续最长数字串python_找出连续最长的数字串(百度面试)

2012-08-09 15:15

浏览 803

分类:非技术

评论