题目描述:在字符串中找出连续最长的数字串
输入描述:输入一个字符串。如果是输入字符串中连续最长的数字串长度为0,则只输出数字0
如果输入的字串中最长的数字字串只有一组,那么输出这个数字字串再加上数字字串长度,用逗号隔开;
如果输入字串中有多个相同长度的数字字串,那么依次输出这些字串,用逗号隔开,在最后输出这些字串的长度,如输入132ab123 那么输出 132,123,3
输出描述:见题目描述
输入例子:abcd12345ed125ss123058789
输出例子:123058789,9
算法实现:
#include<iostream> #include<vector> #include<string> using namespace std; //************************************************ // * Author: 赵志乾 // * Date: 2017-2-19 // * Declaration: All Rigths Reserved !!! //************************************************ void ModifyRet(vector<int>&index,int& ret,int& len,int i); int main() { string instr; getline(cin,instr); vector<int>retindex; int ret=0,len=0,index=0; for(int i=0;i<instr.length();i++) { if(instr[i]>='0'&&instr[i]<='9') len++; else ModifyRet(retindex,ret,len,i); } ModifyRet(retindex,ret,len,instr.length()); if(ret!=0) { for(int i=0;i<retindex.size();i++) cout<<instr.substr(retindex[i],ret)<<','; cout<<ret<<endl; } else cout<<0<<endl; return 0; } void ModifyRet(vector<int>&index,int& ret,int& len,int i) { if(ret<len) { ret=len; index.clear(); index.push_back(i-len); } else if(ret==len) { index.push_back(i-len); } len=0; }