H面试程序(6):字符串中找出连续最长的数字串
//1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)//功能://在字符串中找出连续最长的数字串,并把这个串的长度返回,//并把这个最长数字串付给其中一个函数参数outputstr所指内存。//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789#include<stdio.h>#include<assert.h>int continumax(char *outputstr,char *inputstr){ assert(outputstr); assert(inputstr);int length = 0;int maxlength = 0; int i = 0;int j = 0; while(inputstr[i] != '\0'){while( inputstr[i] >='0'&& inputstr[i] <= '9'){ length++;i++;}if(length > maxlength){maxlength = length;int k = i-maxlength;for(j = 0; j < maxlength; j++ ){ outputstr[j] =inputstr[k++];}length = 0;continue;}i++;length = 0;} outputstr[j] = '\0';return maxlength;}int main( ){ char inputstr[ ]= "abcd12345eddafsd125ss123456789";char outputstr[100]; int max_numstr_length = continumax(outputstr,inputstr);printf("%s\n",outputstr);printf("the max_numstr_length is %d\n", max_numstr_length);return 0;}
ii
#include<iostream.h>#include<malloc.h>int continumax(char * outputstr, char * inputstr){int len = 0; //统计数字字符串的长度int max = 0; //当前最大数字字符串的长度char *pstr =NULL; //记录最大数字字符的起始位置while(* inputstr!= '\0'){if(*inputstr <= '9' && *inputstr >='0') //统计数字子字符串的长度{len++;inputstr++;continue;}else if (len > max) //如果统计出来的数字字符串大于当前的最大数字子字符串的长度,则更新{max = len;pstr = inputstr-len; len = 0;}inputstr++;}for(int i = 0 ; i<max;i++) //将最大子字符串的值拷贝给outputstr{*outputstr = *pstr; outputstr++; pstr++;} outputstr = outputstr-max; outputstr[max] ='\0'; cout<<outputstr<<endl; return max;}int main(){char input[] = "de1234de123456ed";//char * out = (char *)malloc(100*sizeof(char));char output[100];int max = continumax(output, input);cout<<max<<endl;return 0;}