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;
}
相关推荐
♡すぎ♡3 分钟前
SWE 的原理解析
算法·计算机图形学·swe
AiNightVision6 分钟前
星光级 是什么?——星光级摄像机是什么?0.001Lux 照度门槛与选型真相
人工智能·算法·车载系统·自动驾驶·无人机·视频·智能硬件
骑着蜗牛撵大象3279 分钟前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
若亦_13 分钟前
排序>>选择排序
数据结构·算法·排序算法
重生之小比特17 分钟前
【算法拾光】前缀和|一维前缀和 + 二维前缀和
数据结构·算法
释厄62337 分钟前
矢量词汇向下不向上公理即词汇归位定律——肤浅即表面
java·人工智能·算法·去中心化·1024程序员节
码小猿的CPP工坊40 分钟前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++
海绵宝宝转agent42 分钟前
Leetcode100+面经
java·笔记·学习·算法·leetcode·深度优先
Shaoshing1 小时前
LeetCode100 283.移动零
java·数据结构·算法·leetcode
海绵宝宝转agent1 小时前
LeetCode100个人题解+java面经总结
java·开发语言·笔记·学习·算法