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'; } };