Tyvj初学者题库,Q1078:http://www.tyvj.cn/Open_Problem_Show.aspx?id=1078
其实就是从字符串中提取出来数字,然后比较,找出最大的那个!
描述 Description
幼儿园的小朋友们一直在研究一个问题——如何在一个长长的句子中 找到最大的那个整数
你很不幸的被他们拖住了
又很不幸的被他们叫去执行这个 任务 ……
你非常的不爽..!
因为你觉得这么简单的问题简直侮辱了你的智商..
所以你决定写一个程序来代劳..
输入格式 InputFormat
一行,,一个句子长度小于256输出格式 OutputFormat
一行,最大的那个数小于maxlongint
样例输入 SampleInput [复制数据]
&&12345absddkjie64skjd5lk
样例输出 SampleOutput [复制数据]
12345
用一个指针遍历整个字符串,遇到数字的话,就用一个字符串变量buf(意思是buffer,缓冲),来存储这些连续的数字,然后与ans比较,看看谁比较大,就把最大的保留。
毫无疑问,最直观当然是从长度上来看啦,(没有前导零的话)越长的越大,然后长度相同的话,就从头比到尾,一旦不同,就有了大小之分,这个比较的过程也直观,所以就一A了!
下面贴个小代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s, ans, buf;
getline(cin,s);
int len = s.size(), pos = 0;
while(pos < len)
{
if(s[pos]<='9'&&s[pos]>='0')
buf += s[pos];
else
{
if(buf.size() > ans.size()) ans = buf;
else if(buf.size() == ans.size())
{
for(int i=0; i<ans.size(); ++i)
{
if(buf[i] > ans[i])
{
ans = buf;
break;
}
}
}
buf = "";
}
++pos;
}
cout << ans << endl;
return 0;
}
想起之前智锐大神跟我说,这个代码跟迷你裙一样短,自己看就好了!哈哈,他应该也进校队了,可怜我这喳喳还在边缘挣扎······还不懂得拒绝,刚才一个同学叫我帮ta做一个视频,我居然不敢拒绝·······无语死了,我这边电设竞赛的电路还没画完呢!制版还遥遥无期,转眼就快要到提交作品的时候了,真的不想暑假留校这段时间的努力白白浪费啊!!!!!!哎!fighting!