题目描述:
输入描述:
输入一个字符串。
输出描述:
输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不间隔),但是长度还是一串的长度,与数字字符串间用逗号间隔。
解题思路:
当遇到数字时,统计连续数字的个数,若大于当前统计到的最大长度,则保存到数组,数组的最后端保存的肯定是最长的。再判断一下倒数第一和倒数第二的长度是否相同,若相同,则按照题述要求输出。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
string str;
while(cin>>str){
vector<string> ans;
int max=0;
for(int i=0;i<str.size();){
int len=-1;
string tmp;
if(str[i]>='0'&&str[i]<='9'){
while(str[i]>='0'&&str[i]<='9'){
len++;
tmp+=str[i];
i++;
}
}
if(len>=max){
ans.push_back(tmp);
max=len;
}
i++;
}
int length=ans.size();
if(ans[length-1].size()==ans[length-2].size()){
cout<<ans[length-2]<<ans[length-1]<<","<<ans[length-1].size()<<endl;
}
else{
cout<<ans[length-1]<<","<<ans[length-1].size()<<endl;
}
}
return 0;
}
【心中当有力量】