微软面试之25 在字符串中找出连续最长的数字串,并把这个串的长度返回,

来源:互联网 发布:三棱军刺淘宝有买卖吗 编辑:程序博客网 时间:2024/06/05 19:07

.转载自: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;}


 

原创粉丝点击