1 条题解

  • 0
    @ 2022-12-31 10:21:32

    超时的暴力枚举代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s;
        cin >> s;
        for (int i = 0; i < s.size(); i++)
        {
            // 当前字符是 s[i]
            int cnt = 0; // 统计s[i]的出现次数
            for (int j = 0; j < s.size(); j++)
                if (s[j] == s[i])
                    cnt++;
            if (cnt == 1)
            {
                cout << s[i];
                return 0;
            }
        }
        cout << "no";
        return 0;
    }
    

    满分的代码

    1

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s;
        cin >> s;
        // cnt[i]: ascii 值为 i 的字符的出现次数
        // 初始化为了全 0
        int cnt[300] = {};
        for (int i = 0; i < s.length(); i++)
            cnt[s[i]]++; // 当前字符为 s[i]
        for (int i = 0; i < s.length(); i++)
            if (cnt[s[i]] == 1)
            {
                cout << s[i];
                return 0;
            }
        cout << "no";
        return 0;
    }
    

    2

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s;
        cin >> s;
        // cnt[0] ~ cnt[25] : 分别储存 'a' ~ 'z' 的出现次数
        // 初始化为了全 0
        int cnt[30] = {};
        for (int i = 0; i < s.length(); i++)
            cnt[s[i] - 'a']++; // 当前字符为 s[i]
        for (int i = 0; i < s.length(); i++)
            if (cnt[s[i] - 'a'] == 1)
            {
                cout << s[i];
                return 0;
            }
        cout << "no";
        return 0;
    }
    
    • 1

    信息

    ID
    350
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    (无)
    递交数
    170
    已通过
    68
    上传者