题解 | #在字符串中找出连续最长的数字串#C++解法,用一个容器存最长子串,如果还有更长的,则清空容器存更长的子串
在字符串中找出连续最长的数字串
http://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
//整体思路:用一个容器存最长子串,如果还有更长的,则清空容器存更长的子串 #include<bits/stdc++.h> using namespace std; int main() { string str; while(cin>>str) { vector<char> v;//存放最长数字子串 int num=0; for(int i=0;i<str.size();i++) { int tmp=0;//tmp用来存临时的最长个数 while(i<str.size()&&str[i]>='0'&&str[i]<='9') { i++;tmp++; } if(num==tmp)//和最长个数一样多,则都加入v,等待最后输出 { for(int j=i-tmp;j<i;j++) { v.push_back(str[j]); } } if(num<tmp) //比前一个最长个数还多,则清空容器v,插入新的最长数字子串 { num=tmp; v.clear(); for(int j=i-tmp;j<i;j++) { v.push_back(str[j]); } } } for(auto x:v) { cout<<x; } cout<<','<<num<<endl; } }