Notas de cepillado de Leikou: 567. Disposición de las cadenas de símbolos (deslice la ventana, la abuela puede entender)

tema:

Capítulo 567: Disposición de las cadenas de caracteres

Dadas dos cadenas s1 y s2, escriba una función para determinar si s2 contiene la permutación de s1.

En otras palabras, una de las permutaciones de la primera cadena es una subcadena de la segunda cadena.

Ejemplo 1:

Entrada: s1 = “ab” s2 = “eidbaooo”
Salida: Verdadero
Explicación: s2 contiene una de las permutaciones de s1 (“ba”).

Ejemplo 2:

Entrada: s1 = "ab" s2 = "eidboaoo"
Salida: Falso

Nota:

La cadena de entrada contiene solo letras minúsculas
. La longitud de ambas cadenas está entre [1, 10,000]

Ideas de solución de problemas:

1. Utilice la longitud de s1 como ventana para realizar la operación de ventana deslizante en s2;
2. Cuando el Contador obtenido por el segmento de ventana deslizante es igual al Contador de s1, se cumple la condición del problema;
3. Si todas las ventanas fallan, falso retorno.

Código Python de la solución del problema:

class Solution:
    def checkInclusion(self, s1: str, s2: str) -> bool:
        from collections import Counter
        len1 = len(s1)
        len2 = len(s2)
        c1 = Counter(s1)
        for i in range(0, len2-len1+1):
            if Counter(s2[i:i+len1]) == c1:
                return True
        return False

Autor: a-qing-ge
Enlaces: https://leetcode-cn.com/problems/permutation-in-string/solution/hua-chuang-hen-hao-li-jie-de-dai-ma-nai-qujgb /
Fuente: LeetCode https://leetcode-cn.com/problems/permutation-in-string/

Supongo que te gusta

Origin blog.csdn.net/weixin_44414948/article/details/113781406
Recomendado
Clasificación