leetcode 299 Bulls and Cows

1. 

class Solution {
public:
    string getHint(string secret, string guess) {
        int bulls=0,cows=0;
        vector<int> m(10,0);
        queue<int> q;
        for(int i=0;i<guess.size();++i) {
            if(secret[i]==guess[i]) {
                ++bulls;
            }
            else {
                q.push(i);
                ++m[secret[i]-'0'];
            }
        }//for
        while(!q.empty()) {
            int i=q.front();q.pop();
            if(!m[guess[i]-'0']) continue;
            ++cows;
            --m[guess[i]-'0'];
            
        }
        
        string re=to_string(bulls)+'A'+to_string(cows)+'B';
        return re;
    }
};

2. 用一个vector,在secret的值上做加法,guess的值上做减法.

class Solution {
public:
    string getHint(string secret, string guess) {
        int bulls=0,cows=0;
        vector<int> vec(10,0);
        for(int i=0;i<secret.size();++i) {
            if(secret[i]==guess[i]) ++bulls;
            else {
                if(vec[secret[i]-'0']++<0) ++cows;//vec[secret[i]-'0']<0表示guess中,有一个未匹配的secret[i]
                if(vec[guess[i]-'0']-->0) ++cows;//vec[guess[i]-'0']>0表示在secret,有一个未匹配的guess[i]
            }
        }
        return to_string(bulls)+'A'+to_string(cows)+'B';
    }
};
原文地址:https://www.cnblogs.com/LiuQiujie/p/12579727.html