py_string_permutation_checker · Python
▶ Aprender py_string_permutation_checker (Python) paso a paso · explicación de py_string_permutation_checker
Código línea a línea
Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.
py_string_permutation_checker.py
| Código | Subject | Por qué |
|---|---|---|
def string_permutation_checker(s1: str, s2: str) -> bool: | def string_permutation_checker(s1: str, s2: str) -> bool: | Firma del subject. |
if len(s1) != len(s2): | string_permutation_checker("a", "") => False | Longitudes distintas: imposible. Atajo barato que además hace innecesario comprobar sobrantes al final. |
return False | No. Misma línea para los dos casos de fallo. | |
counts = {} | determines if two strings are permutations of each other | Cuento cuántas veces sale cada carácter de s1. Un dict a mano: Counter necesitaría import. |
for ch in s1: | Case sensitive. Whitespace and punctuation count as regular characters. | Cada carácter tal cual: sin lower(), sin quitar espacios. Es la diferencia con py_anagram. |
counts[ch] = counts.get(ch, 0) + 1 | get(ch, 0) evita el KeyError la primera vez. | |
for ch in s2: | Ahora descuento con s2. | |
if counts.get(ch, 0) == 0: | Un carácter que s1 no tenía, o que ya gasté: no es permutación. | |
return False | No. Misma línea para los dos casos de fallo. | |
counts[ch] -= 1 | Gasto uno. | |
return True | Empty strings are permutations of each other. | Misma longitud y nunca falté: son permutación. Con dos vacíos, los bucles no entran y da True. |