LeetCode简单题:299. 猜数字游戏(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/bulls-and-cows/
要点:hashmap
Python,C++,Java都用了相同的哈希表法。
bulls可以直接遍历一遍求出,并且在这第一次遍历时把secret的每个字母录入到hashmap中,在进行第二次遍历guess字符串,将guess的每个字母发到hashmap中去寻找,找到且hashmap对应的value大于0就将value减1,cows随之加一,最后将cows减去bulls即可(因为重复计算)。

二.Python实现

class Solution:
    def getHint(self, secret: str, guess: str) -> str:
        if not guess:
            return None
        dic = {}
        bulls = 0
        cows = 0
        for i in range(len(secret)):
            if secret[i]==guess[i]:
                bulls +=1
            if secret[i] in dic:
                dic[secret[i]]+=1
            else:
                dic[secret[i]]=1

        for i in range(len(guess)):   
            if guess[i] in dic:
                if dic[guess[i]]>0:
                    dic[guess[i]]-=1
                    cows+=1
        cows-=bulls

        return str(bulls)+'A'+str(cows)+'B'

三.C++实现

class Solution {
public:
    string getHint(string secret, string guess) {
        int bulls=0;
        int cows=0;
        unordered_map<char,int> hashmap;
        int length=secret.size();
        for(int i=0;i<length;i++){
            if(secret[i]==guess[i]) bulls++;
            if(hashmap[secret[i]])
            hashmap[secret[i]]++;
            else hashmap[secret[i]]=1;
        }

        for(int j=0;j<length;j++){
            if(hashmap[guess[j]]>0){
                hashmap[guess[j]]--;
                cows++;
            }
        }

        cows=cows-bulls;

        string answer="";
        answer=to_string(bulls) + "A" + to_string(cows) + "B";
        return answer;

    }
};

四.java实现

class Solution {
    public String getHint(String secret, String guess) {

        int bulls=0;
        int cows=0;
        Map<Character,Integer> hashmap=new HashMap<Character,Integer>();
        int length=secret.length();
        for(int i=0;i<length;i++){
            if(secret.charAt(i)==guess.charAt(i)) bulls++;
            if(hashmap.containsKey(secret.charAt(i)))
            hashmap.put(secret.charAt(i),hashmap.get(secret.charAt(i))+1);
            else hashmap.put(secret.charAt(i),1);
        }

        for(int j=0;j<length;j++){
             if(hashmap.containsKey(guess.charAt(j))){
             if(hashmap.get(guess.charAt(j))>0){
                hashmap.put(guess.charAt(j),hashmap.get(guess.charAt(j))-1);
                cows++;
            }
            }
        }

        cows=cows-bulls;

        String answer="";
        answer=bulls+ "A" + cows+ "B";
        return answer;

    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。