读入一个字符串str,输出字符串str中连续最长的数字串
例如输入abcd1234erter123456789ABCD, 输出123456789
设计思路:在尽量减小时间复杂度的条件下,使用一个大循环,停止条件为遇到字符串结束符。当遇到数字串就装进带判断字符数组内,并记录该数字串长度Gu,若该数字串大小大于Max,将其拷贝入最大字符数组内,当遇到其他字符串时仅移动指针。注意在找最长数字串的时候别忘了用一个指针定位该数字串的头。
#include<iostream> #include<string.h> using namespace std; int main() { char *p = (char*)malloc(100); char *p1 = NULL; char max[100] = {}; char gu[100] = {}; int Max = 0, Gu = 0; cout<<"Please input string: "; cin>>p; p1 = p; while(p1[0]!='\0') { while(p1[0]<58 && p1[0]>47) { p1++; Gu++; } if(Gu>Max) { strncpy(max, p, Gu); p = p1; max[Gu] = '\0'; Max = Gu; } Gu = 0; while(p1[0]>64&&p1[0]<91 || p1[0]>96&&p1[0]<123) { p1++; //Gu++; } p = p1; /*if(Gu>Max) { strncpy(max, p, Gu); p = p1; max[Gu] = '\0'; Max = Gu; } Gu = 0;*/ } cout<<max<<endl; return 0; }
测试结果