leetCode - Jeu de devinettes

Enregistrement d'algorithme

Sujet LeetCode :

  Vous jouez au jeu Bulls and Cows avec vos amis. Les règles du jeu sont les suivantes :

  • Écrivez un numéro secret et demandez à un ami de deviner quel est le numéro. Chaque fois que votre ami devine, vous lui donnez un indice avec les informations suivantes :

  • Devinez combien de chiffres appartiennent au nombre et la position exacte correctement (appelé "Bulls");

  • Combien de chiffres appartiennent au nombre Deviné correctement mais au mauvais endroit (appelé "Vaches", vaches).

  Étant donné un numéro secret secret et un numéro deviné par votre ami, veuillez renvoyer un indice pour la supposition de votre ami.

  Le format de l'invite est "xAyB", où x est le nombre de taureaux, y est le nombre de vaches, A est pour les taureaux et B est pour les vaches. Notez que les numéros secrets et les numéros devinés par des amis peuvent contenir des numéros en double.


illustrer

1. Le sujet

输入:secret = "1807", guess = "7810"
输出:"1A3B"
解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
"1807"
  |
"7810"
复制代码

2. Analyse

  • La question n'est pas difficile, mais le sens de la question est un peu confus. En général, nous devons trouver le nombre des mêmes éléments dans les positions correspondantes des deux chaînes, et le nombre des mêmes éléments sauf l'égal correspondant postes.
  • Et il y a les mêmes éléments, c'est-à-dire que nous devons également conserver le nombre de caractères dans la chaîne d'origine des différents éléments.
class Solution {
    public String getHint(String secret, String guess) {
        int bulls = 0, cows = 0;
        Map<Character, Integer> set = new HashMap();
        for(int i = 0; i < secret.length(); i++) {
            if(secret.charAt(i) == guess.charAt(i)) continue;
            set.put(secret.charAt(i), set.getOrDefault(secret.charAt(i), 0) + 1);
        }
        for(int i = 0; i < secret.length(); i++) {
            if(secret.charAt(i) == guess.charAt(i)) bulls++;
            else {
                if(set.containsKey(guess.charAt(i)) && set.get(guess.charAt(i)) > 0) {
                    cows++;
                    set.put(guess.charAt(i), set.get(guess.charAt(i)) - 1);
                }
            }
        }
        return bulls + "A" + cows + "B";
    }
}
复制代码

Résumer

Manipulation de chaîne.

Je suppose que tu aimes

Origine juejin.im/post/7103877906765447199
conseillé
Classement