242 Anagrama Válido

Descripción del título

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 ; 
    } 
};

 

 

Supongo que te gusta

Origin www.cnblogs.com/AntonioSu/p/12741562.html
242
Recomendado
Clasificación