第6题 最大的整数(maxint) 时限:1s 空间:256m
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了…… 游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了…… 如果你是“1”,你能写个程序来解决这件事情么?
Input
【输入格式】
只有一个字符串,这里面藏有很多的整数小伙伴
Output
【输出格式】
共两行,第一行输出最大的那个整数,第二行输出其的位置(整数第一个数字在原串中的位置)
Sample Input
【输入样例】
((-a32AB342+//32143abAA
Sample Output
【输出样例】
32143
17
样例解释:这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。
#include <iostream>
#include <string>
using namespace std;
int find_max_int_from_string(const string &str, int start, int *max)
{
int i = start;
int max_int = 0;
while (i < str.size())
{
if (str[i] >= '0' && str[i] <= '9')
{
int num = str[i] - '0';
max_int = max_int * 10 + num;
i++;
}
else
{
i++;
break;
}
}
if (max_int >= *max)
{
*max = max_int;
}
return i;
}
int main(int argc, char **argv)
{
string str;
cin >> str;
int max = 1;
int index = 0;
while (index < str.length())
{
index = find_max_int_from_string(str, index, &max);
}
index = index - to_string(max).length() - 1;
cout << max << endl
<< index << endl;
return 0;
}