LeetCode299. Bulls and Cows

题目链接:

https://leetcode.com/problems/bulls-and-cows/

题目描述:

猜数字游戏,两个字符串,secret与 guess,将guess与secret比较,找出guess中,有多少是数字正确且位置正确的,有多少是数字正确位置错误的。

Secret number: “1807”
Friend’s guess: “7810”
return “1A3B”

Secret number: “1123”
Friend’s guess: “0111”
return “1A1B”

题目分析:

A代表数字正确且位置正确的个数
B代表数字正确但位置不正确的个数

两次遍历。

第一次找数字正确且位置正确的(剩下的要么是数字正确但位置不正确的,要么是数字不正确位置也不正确的),用一个数组记录guess中与secret不同的字符。

第二次遍历就在剩下两种情况中找数字正确但位置不正确的,记录数组如果表示存在secret中字符,那么就是数字正确但位置不正确。

代码:

class Solution {
public:
    string getHint(string secret, string guess){
        int A=0,B=0;
        int len=secret.size();
        int num[10]={0};
        for(int i=0;i<len;i++){
            if(secret[i]==guess[i]){
                A++;
            }
            else{
               num[guess[i]-'0']++;
            }
        }
        for(int i=0;i<len;i++){
           if(secret[i]!=guess[i] && num[secret[i]-'0']>0){
               num[secret[i]-'0']--;
               B++;
           }
        }
        char result[128] = {0};  
        sprintf(result, "%dA%dB", A, B);  
        return result;
    }
};

你可能感兴趣的:(LeetCode,String,hash)