Ley de la palabra

1. Demanda

  • Dada una regla  pattern y una cadena  str , juzgue  str si debe seguir la misma regla;
  • Seguir  aquí se  refiere a la coincidencia completa. Por ejemplo,  hay una conexión bidireccional entre pattern cada letra de la cadena str y cada palabra que no está vacía en la cadena  .

Ejemplo 1:

输入: pattern = "abba", str = "dog cat cat dog"
输出: true

Ejemplo 2:

输入:pattern = "abba", str = "dog cat cat fish"
输出: false

Explicación:
puede suponer que  pattern solo se incluyen letras minúsculas, incluidas letras minúsculas  str separadas por un solo espacio.

En segundo lugar, la tabla hash

2.1 Análisis de pensamiento

  1. La idea de esta pregunta es consistente con el algoritmo de optimización de la tabla hash en cadenas isomorfas : https://blog.csdn.net/Sruggle/article/details/114001098 ;
  2. Es decir, el carácter es la clave y la palabra es el valor. Si una de las dos condiciones es verdadera, será falsa: ①No hay ningún carácter actual en la tabla hash, pero hay un mapeo del carácter actual; ②Hay es un carácter actual en la tabla hash, pero su mapeo es la palabra actual diferente;

2.2 Implementación del código

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] words = s.split(" ");
        if(pattern.length() != words.length) {
            return false;
        }
        Map<Character, String> map = new HashMap<>();
        for(int i = 0; i < pattern.length(); i++) {
            char c = pattern.charAt(i);
            String word = words[i];
            if(!map.containsKey(c)) {
                //不包括字符,却存在其映射单词
                if(map.containsValue(word)) {
                    return false;
                }
                map.put(c, word);
            } else {
                //包括字符,其映射与存储的值不相同
                if(!map.get(c).equals(word)) {
                    return false;
                }
            }
        }
        return true;
    }
}

2.3 Análisis de complejidad

  • La complejidad del tiempo es O (N);
  • La complejidad del espacio es O (N);

Supongo que te gusta

Origin blog.csdn.net/Sruggle/article/details/114015384
Recomendado
Clasificación