隐藏的最大整数WA 45分

题目描述
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……

游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……

如果你是“1”,你能写个程序来解决这件事情么?

输入格式
只有一个字符串,这里面藏有很多的整数小伙伴。字符串最多包含255个字符

输出格式
只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。

样例输入

*((*-a32AB342+//32143abAA

样例输出

17

我的WA代码:

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    cin >> s;
    long long n = s.size(), index = 0, max = -2147483647, sum = 0, wz[100005] = {0}, num[100005];
    memset(num, -2147483647, sizeof(num));
    bool flag = false;
    for(int i = 0; i < n; i++)
    {
        if(s[i] >= '0' && s[i] <= '9')
        {
            if(!flag) flag = true, sum += s[i] - '0', wz[index] = i + 1;
            else sum *= 10, sum += s[i] - '0';
        }
        else
        {
            if(sum != 0) num[index++] = sum;
            sum = 0, flag = false;
        }
    }
    long long k = 0;
    for(int i = 0; i < index; i++)
        if(num[i] > max) max = num[i], k = wz[i];
    printf("%lld", k);
    return 0;
}

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 260;
string s;

int main() {
    cin >> s;
    int res = 0, num = 0, n = s.size();
    for(int i = 0 ; i < n; i ++) {
        int j = i;
        while(j < n && s[j] <= '9' && s[j] >= '0') j ++;
        int t = 0;
        for(int k = i; k < j; k ++)
            t = t * 10 + s[k] - '0';
        if(t > num) num = t, res = i;
        i = j;
    }
    
    cout << res + 1 << endl;
    
    return 0;
}

img