Dadas dos secuencias s y t , escribir una función para determinar si t es un anagrama de s .
Ejemplo 1:
Entrada: s = "anagrama", t = "nagaram"
Salida: verdadero
Ejemplo 2
Entrada: s = "rata", t = "auto"
Salida: falso
Nota: Puede suponer que la cadena contiene solo alfabetos en minúsculas.
Seguimiento: ¿Qué sucede si las entradas contienen caracteres unicode? ¿Cómo adaptarías tu solución a tal caso?
Factor de dificultad
Medio
Solución 1: Comparar después de ordenar
Solución de clase { public : bool isAnagram ( string s, string t) { sort (s.begin (), s.end ()); sort (t.begin (), t.end ()); retorno s == t; } };
Solución 2: registre el número de letras en cada cadena
Solución de clase { public : bool isAnagram ( cadena s, cadena t) { int s_alpha [ 26 ] = { 0 }; int t_alpha [ 26 ] = { 0 }; if (s.size ()! = t.size ()) devuelve falso ; for ( int i = 0 ; i <s.size (); ++ i) { s_alpha [s [i] - ' a ' ] ++ ; t_alpha [t [i] -' a ' ] ++ ; } for ( int j = 0 ; j < 26 ; ++ j) { if (s_alpha [j]! = t_alpha [j]) devuelve falso ; } devuelve verdadero ; } };