一道简单题,请各位不要无视!

第6题 最大的整数(maxint) 时限:1s 空间:256m
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了…… 游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了…… 如果你是“1”,你能写个程序来解决这件事情么?

Input

【输入格式】
只有一个字符串,这里面藏有很多的整数小伙伴

Output

【输出格式】
共两行,第一行输出最大的那个整数,第二行输出其的位置(整数第一个数字在原串中的位置)

Sample Input

【输入样例】

((-a32AB342+//32143abAA

Sample Output

【输出样例】

32143

17

样例解释:这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。

img


#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;
}