在字符串中找出连续最长的数字串

这个题目确实在输出格式上没有说清楚,应该是如下几种情况:


1 如果是输入就是一个空字符串,那么输出空串,不输出数字个数;


2 如果输入是一串字符但是没有任何数字,那么直接输出0,不能有其它输出;


3 如果输入的字串中最长的数字字串只有一组,那么输出这个数字字串再加上数字字串长度,用逗号隔开;


4 如果输入字串中有多个相同长度的数字字串,那么依次输出这些字串,用逗号隔开,在最后输出这些字串的长度,如输入132ab123 那么 输出 132,123,3

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

string s;
string maxs, maxs2[10];
string temp ;
int maxn = 0;
int okay = 0;
int k = 0, digit = 0;
int flag[105] = {0}, flagMore = 0;
int num = 1, num2 = 0;
int main(){
    cin>>s;
    int len = s.length();
    if(len == 0){
        cout<<" "<<endl;
        return 0;
    }
    for(int i = 0; i < len; i++){
        char c = s[i];
        if(isdigit(c)) {flag[i] = 1; okay = 1;}
    }
    /*
    for(int i = 0; i < len; i++){
        cout<<flag[i]<<" ";
    }
    */
    for(int i = 0; i < len;){
        k = i;
        int tmposition = 0;
        int position = 0;
        if(flag[k++]){
            k--;
            digit = 1;
            tmposition = k;
            while(flag[++k])
                position = k;
            int maxtemp = position - tmposition + 1;
            temp = s.substr(tmposition, maxtemp);
            if(maxtemp > maxn){
                maxn = maxtemp;
                maxs = temp;
            }
            else if (maxtemp == maxn){
                maxs2[num2++] = temp;
                flagMore = 1;
            }
        }
        i = k;
    }

    if(okay){
        if(flagMore){
            cout<<maxs<<",";
            for(int i = 0; i < num2; i++)
                cout<<maxs2[i]<<",";
            cout<<maxn<<endl;
        }
        else
            cout<<maxs<<","<<maxn<<endl;
    }

    else
        cout<<"0"<<endl;

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值