字符串中找出连续最长数字串(两种题型)--C++

题目描述一:读入一个字符串str,输出字符串str中的连续最长的数字串
  • 输入描述:
    个测试输入包含1个测试用例,一个字符串str,长度不超过255。

  • 输出描述:
    在一行内输出str中里连续最长的数字串。

  • 输入
    abcd12345ed125ss123456789

  • 输出
    123456789

  • 思路分析:将字符串中数字串分离出来,并且要计算出来哪个数字串的长度最长,需要做的工作就是将每一段的数字串保存在一个临时空间中,当有比该临时空间数字串大的,就将原来的数字串同临时空间中清空。

  • 代码实现如下:

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

int main()
{
    string str;//定义str为某个要输入的字符串
    cin>>str;

    string tmp;//定义一个临时字符串数组用来存放数字串
    string maxstr;//只存放最长的数字串
    int maxlength=0;

    for(int i=0;i<str.length();i++)
    {
        if(str[i]>='0' && str[i]<='9')
        {
            //次数的while循环和if中的判断语句一样,但是千万不可以少
            //while是为了将所有的数字串都加进tmp当中
            while(str[i]>='0' && str[i]<='9')
            {
                tmp+=str[i++];
            }
            if(tmp.size()>maxlength)
            {
                maxstr=tmp;
                maxlength=tmp.size();
            }
        }
        tmp.clear();
    }
    cout<<maxstr;
    return 0;
}

看懂思路的老铁们想小试牛刀的话,点击这个链接
链接:https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d?orderByHotValue=0&page=1&onlyReference=false
来源:牛客网

题目描述二:
  • 输出描述:

  • 输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

  • 输入
    abcd12345ed125ss123058789

  • 输出
    123058789,9

  • 代码实现如下:

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

int main()
{
    string str;

    while(cin>>str)
    {
        string tmp;
        vector<string> arr;

        for(int i=0;i<=str.length();i++)
        {
            if(str[i]>='0' && str[i]<='9')
            {
                tmp+=str[i];
            }
            else
            {
                if(tmp.length()!=0)
                {
                    arr.push_back(tmp);
                }
                tmp.clear();
            }
        }

        int max=0;
        int length=0;

        for(int i=0;i<arr.size();i++)
        {
            if(max<(arr[i]).length())
            {
                max=(arr[i]).length();
                length=max;
            }
        }

        for(int i=0;i<arr.size();i++)
        {
            if(max==(arr[i]).length())
            {
                cout<<arr[i];
            }
        }
        cout<<","<<length<<endl;
    }
    return 0;
}

链接:
https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec

猜你喜欢

转载自blog.csdn.net/cherrydreamsover/article/details/81271223