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

知识点字符串模拟

描述

对于给定的由数字和小写字母混合构成的字符串 s,找到其中最长的数字++子串++ 。如果由多个相同长度的数字子串,则需要全部输出,具体输出的格式请参考输出描述。

++子串++为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

输入一个长度为 1≦len(s)≦200、由数字和小写字母混合构成的字符串 s。保证至少存在一个数字子串。

输出描述:

记最长的数字子串长度为 l,有 m 个长度为 l 的数字子串。在一行上先首尾相连的输出 m 个长度为 l 的数字子串(不使用空格分割),随后输出一个逗号,再输出 l。

示例1

输入:

复制代码
abcd12345ed125ss123058789

输出:

复制代码
123058789,9

示例2

输入:

复制代码
11a22b33c

输出:

复制代码
112233,2

说明:

复制代码
在这个样例中,数字子串 "11","22","33" 长度均为 2,都是最长的数字子串。

备注:

复制代码
本题数据已规范为单组询问(2025/01/15)。
cpp 复制代码
#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
    string s;
    while (cin>>s)
    {
        int i=0;
        int maxm = 0;
        //记录最长数字子串的起始位置
        vector<int> index;
        while (i<s.size())
        {
            if ('0'<=s[i] && s[i]<='9')
            {
                int j = i + 1;
                //找到一个连续的数字子串
                while ('0'<=s[j] && s[j]<='9') j++;
                //如果和当前最大长度相等,则记录子串的第一个字符
                if ((j-i)==maxm)
                {
                    index.push_back(i);
                }
                //如果大于当前最大长度,则更新
                if ((j-i)>maxm)
                {
                    maxm = j - i;
                    index.clear();
                    index.push_back(i);
                }
                i = j + 1;
            }
            else i++;
        }
        for (int h=0;h<index.size();h++)
        {
            for (int k=0;k<maxm;k++) cout<<s[index[h]+k];
        }
        cout<<','<<maxm<<endl;
    }
    return 0;
}
相关推荐
Tanecious.1 天前
蓝桥杯备赛:Day6-B-小紫的劣势博弈 (牛客周赛 Round 85)
c++·蓝桥杯
流云鹤1 天前
Codeforces Round 1090 (Div. 4)
c++·算法
小菜鸡桃蛋狗1 天前
C++——string(上)
开发语言·c++
wljy11 天前
第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(个人见解,已完结)
c语言·c++·算法·蓝桥杯·stl
清空mega1 天前
C++中关于数学的一些语法回忆(2)
开发语言·c++·算法
想唱rap1 天前
线程池以及读写问题
服务器·数据库·c++·mysql·ubuntu
香蕉鼠片1 天前
数据结构八股(一)
数据结构·算法
Mr_Xuhhh1 天前
从理论到实践:深入理解算法的时间与空间复杂度
java·开发语言·算法
望眼欲穿的程序猿1 天前
Vscode Clangd 无法索引 C++17 或者以上标准
java·c++·vscode
6Hzlia1 天前
【Hot 100 刷题计划】 LeetCode 42. 接雨水 | C++ 动态规划与双指针题解
c++·算法·leetcode