leetCode - Juego de adivinanzas de números

Registro de algoritmo

Tema de LeetCode:

  Estás jugando al juego Bulls and Cows con tus amigos. Las reglas del juego son las siguientes:

  • Escribe un número secreto y pídele a un amigo que adivine cuál es el número. Cada vez que tu amigo adivine, le das una pista con la siguiente información:

  • Adivina cuántos dígitos pertenecen al número y la posición exacta correctamente (llamados "Bulls");

  • Cuántos dígitos pertenecen al número Adivinado correctamente pero en el lugar equivocado (llamado "Vacas", vacas).

  Dado un número secreto secreto y un número adivinado por su amigo, devuelva una pista para la suposición de su amigo.

  El formato del indicador es "xAyB", donde x es el número de toros, y es el número de vacas, A es para toros y B es para vacas. Tenga en cuenta que tanto los números secretos como los números adivinados por amigos pueden contener números duplicados.


ilustrar

1. El tema

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

2. Análisis

  • La pregunta no es difícil, pero el significado de la pregunta es un poco confuso. En general, necesitamos encontrar el número de los mismos elementos en las posiciones correspondientes de las dos cadenas, y el número de los mismos elementos excepto el igual correspondiente posiciones.
  • Y hay los mismos elementos, es decir, también debemos mantener la cantidad de caracteres en la cadena original de diferentes elementos.
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";
    }
}
复制代码

Resumir

Manipulación de cadenas.

Supongo que te gusta

Origin juejin.im/post/7103877906765447199
Recomendado
Clasificación