题目描述一:读入一个字符串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