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/