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ódigoSubjectPor 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", "") => FalseLongitudes distintas: imposible. Atajo barato que además hace innecesario comprobar sobrantes al final.
return FalseNo. Misma línea para los dos casos de fallo.
counts = {}determines if two strings are permutations of each otherCuento 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) + 1get(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 FalseNo. Misma línea para los dos casos de fallo.
counts[ch] -= 1Gasto uno.
return TrueEmpty 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.