记得好像是去年有个公司的编程题,简单题,用一个位置s,和一个最大长度maxlen,每次寻找找到大于maxlen就更新这两个值就可以了,思路很简单!
#include<iostream>
using namespace std;
int main()
{
char in[100];
gets_s(in);
int len = strlen(in);
if (len == 0)
{
cout << 0 << endl;
return 0;
}
int start=-1, end=-1, tempstart = 0, tempend = 0, max = 0, sum = 0;
bool begin = true;
for (int i = 0; i<len; i++)
{
if (in[i] >= '0'&&in[i] <= '9')
{
sum++;
if (begin)
{
tempend=tempstart = i;
begin = false;
}
else
{
tempend++;
}
}
else
{
begin = true;
if (sum>max)
{
max = sum;
start = tempstart;
end = tempend;
}
sum = 0;
}
}
if (start == end&&start == -1&&sum==0)
{
cout << 0 << endl;
return 0;
}
if (sum>max)
{
max = sum;
start = tempstart;
end = tempend;
}
for (int i = start; i <= end; i++)
{
cout << in[i];
}
cout << ",";
cout << max<<endl;
return 0;
}
结论:程序其实没有必要设置end位置因为知道start 和max就可以写出数字串!!!