字符串
读入一个字符串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;
}
测试结果
不积小流无以成江河