top1编程
← 返回题目
题解

【基础】隐藏的最大整数

1 条题解

  • 0
    @ 2026-7-30 1:34:17

    解题思路

    扫描字符串中的连续数字,组成整数并记录最大整数的起始位置,位置从1开始。

    参考代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string s;
        cin >> s;
        long long big = -1, x = 0;
        int pos = 0, bpos = 0;
        for (int i = 0; i <= (int)s.size(); i++) {
            if (i < (int)s.size() && s[i] >= '0' && s[i] <= '9') {
                // 连续数字逐位组成一个完整的整数。
                x = x * 10 + s[i] - '0';
            } else {
                // 找到更大的整数时,同时记下它的起始位置。
                if (x > big) {
                    big = x;
                    bpos = pos + 1;
                }
                x = 0;
                // 下一个整数的位置从当前分隔符的后面开始。
                pos = i + 1;
            }
        }
        // 题目中的位置从1开始,所以输出bpos。
        cout << bpos;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。

    • 1