[华为OJ--C++]087-在字符串中找出连续最长的数字串

来源:互联网 发布:深圳返享网络 编辑:程序博客网 时间:2024/05/23 23:13

题目描述:在字符串中找出连续最长的数字串

如果是输入字符串中连续最长的数字串长度为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++;elseModifyRet(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;}elsecout<<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;}




0 0
原创粉丝点击