美文网首页
Bulls and Cows

Bulls and Cows

作者: 我叫胆小我喜欢小心 | 来源:发表于2017-04-22 11:30 被阅读64次

    题目来源
    猜数字的游戏,然后我做的时候想的是用哈希,遍历两遍,第一遍记录下secret每个字母出现的频次,然后第二遍遍历进行比较。
    代码如下:

    class Solution {
    public:
        string getHint(string secret, string guess) {
            int n = secret.size();
            int a = 0, b = 0;
            unordered_map<char, int> maps;
            for (int i=0; i<n; i++)
                maps[secret[i]]++;
            for (int i=0; i<n; i++) {
                if (guess[i] == secret[i]) {
                    a++;
                    maps[secret[i]]--;
                    if (maps[secret[i]] < 0)
                        b--;
                }
                else if (maps.count(guess[i]) != 0 && maps[guess[i]] > 0) {
                    b++;
                    maps[guess[i]]--;
                }
            }
            return to_string(a) + "A" + to_string(b) + "B";
        }
    };
    

    然后发现写的不太好,看了下讨论区,修改后代码如下:

    class Solution {
    public:
        string getHint(string secret, string guess) {
            int n = secret.size();
            int a = 0, b = 0;
            vector<int> sVec(10, 0);
            vector<int> gVec(10, 0);
            for (int i=0; i<n; i++)
                if (secret[i] == guess[i])
                    a++;
                else {
                    sVec[secret[i] - '0']++;
                    gVec[guess[i] - '0']++;
                }
            for (int i=0; i<10; i++)
                b += min(sVec[i], gVec[i]);
            return to_string(a) + "A" + to_string(b) + "B";
        }
    };
    

    相关文章

      网友评论

          本文标题:Bulls and Cows

          本文链接:https://www.haomeiwen.com/subject/jqulzttx.html