字符串中找出连续最长的数字串
//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; }
#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; }
补充:web前端 , JavaScript ,