美文网首页
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