.转载自:July http://blog.csdn.net/v_JULY_v/article/details/6126406
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,
outputstr 所指的值为123456789
下面是我的解法:
此题是简单题:
int continumax(char* &outputstr,char* inputstr)
{
outputstr=(char*)malloc(sizeof(char)*strlen(inputstr));
memset(outputstr,0,sizeof(outputstr)/sizeof(char));
int i=0;
int j=1;
int presum=0;
int begin=0;
int sum=0;
while(inputstr[j]!='\0')
{
if((inputstr[j]-inputstr[i])==1&&inputstr[j]>='1'&&inputstr[j]<='9')
{
i++;j++;
sum++;
}
else
{
if(presum<sum)
{
presum=sum;
begin=j-presum-1;
}
sum=0;
i++;
j++;
}
}
if(presum<sum)
{
presum=sum;
begin=j-presum-1;
}
cout<<begin<<":"<<presum<<endl;
std::string str=inputstr;
str=str.substr(begin,presum+1);
strcpy(outputstr,str.c_str());
return begin;
}
int main()
{
char* output=NULL;
char str[]="abcd12345ed125ss123456789afsdabcdefghijklmasdf;j";
int i=continumax(output,str);
cout<<output<<endl;
free(output);
return 0;
}