1 条题解

  • 0
    @ 2026-10-26 22:50:07

    思路与算法

    忽略字母并统计十个数字的次数,按9到0逐个输出全部数字。

    正确性说明

    增加一个可用数字能增加位数且已有非零数字可放首位,所以全部数字都应使用。固定多重集按降序使字典序最大,也即相同位数整数最大,首位必非0。

    复杂度

    O(|s|+10)时间、O(1)计数空间(输入字符串O(|s|));结果通过字符流输出,不转整数。

    易错点

    多个0都要保留到末尾;百万位结果不能转成数值类型。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        string s;
        cin >> s;
        int cnt[10] = {};
        for (char c : s)
            if (isdigit(c))
                cnt[c - '0']++;
        for (int i = 9; i >= 0; i--)
            while (cnt[i]--)
                cout << i;
        cout << "\n";
    }
    
    • 1

    信息

    ID
    1921
    时间
    1000ms
    内存
    512MiB
    难度
    入门
    标签
    递交数
    0
    已通过
    0
    上传者