字符串数字的提取

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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值