leetcode 299デジタルゲームC++

5948 ワード

1、テーマ
https://leetcode-cn.com/problems/bulls-and-cows/
2、題意
解法1:まず位置が正確で等しい記録をし、そうでなければ、等しくない数の個数を記録し、2回目は便利で、その数が現れたかどうかを判断し、個数-1,b+1が現れたことがある.
class Solution {
public:
    string getHint(string secret, string guess) {
            int size = secret.size();
            if(size==0) return "0A0B";
            int a=0,b=0;
            vector<int> cnt(10,0);
            for(int i=0;i<size;i++)
            {
                if(secret[i]==guess[i])
                    a++;
                else
                    cnt[secret[i]-'0']++;
            }
            for(int i=0;i<size;i++)
            {
                if((secret[i]!=guess[i])&&(cnt[guess[i]-'0']>0))
                {
                    b++;
                    cnt[guess[i]-'0']--;
                }
            }
            return to_string(a)+'A'+to_string(b)+'B';
    }
};