Likou 389. Encuentre la diferencia: el proceso de optimización de la idea de la tabla hash

389. Halla la diferencia

Dadas dos cadenas s y t, solo contienen letras minúsculas.

La cadena t se reordena aleatoriamente por la cadena s, y luego se agrega una letra en una posición aleatoria.

Encuentre la letra agregada en t.

Ejemplo 1:

Entrada: s = "abcd", t = "abcde"
Salida: "e"
Explicación: 'e' es la letra que se agregó.
Ejemplo 2:

Entrada: s = "", t = "y"
Salida: "y"
Ejemplo 3:

Entrada: s = "a", t = "aa"
Salida: "a"
Ejemplo 4:

Entrada: s = "ae", t = "aea"
Salida: "a"

提示:
0 <= s.length <= 1000
t.length == s.length + 1
s 和 t 只包含小写字母

responder:

Intuitivamente, puede usar una tabla hash para almacenar el número de ocurrencias de cada letra de la matriz y luego comparar el número de ocurrencias una por una, es decir, usar dos tablas hash; también puede usar solo una tabla hash para permitir que la la matriz se "almacena" y la matriz t se "elimina".

Código:

char findTheDifference(char * s, char * t){
    
    
    int hash[26]={
    
    0};
    for(int i=0;i<strlen(s);i++)
    {
    
    
        hash[s[i]-'a']++;
    }
    for(int i=0;i<strlen(t);i++)
    {
    
    
        hash[t[i]-'a']--;
    }
    char temp;
    for(int i=0;i<26;i++)
    {
    
    
        if(hash[i]==-1)
        {
    
    
            temp = i+'a';
            return temp;
        }
    }
    return 1;
}

Más tarde, descubrí que se puede optimizar, no es necesario "guardar", y luego comparar después de "eliminar". Cuando pueda eliminar, realice el proceso de comparación. Una vez que encuentre una diferencia, puede saltar inmediatamente. Y esto también ahorra una temperatura variable intermedia.

Código:

char findTheDifference(char * s, char * t){
    
    
    int hash[26]={
    
    0};
    for(int i=0;i<strlen(s);i++)
    {
    
    
        hash[s[i]-'a']++;
    }
    for(int i=0;i<strlen(t);i++)
    {
    
    
        hash[t[i]-'a']--;
        if(hash[t[i]-'a']==-1)
        {
    
    
             return t[i];
        }
    }
    return 1;
}

Supongo que te gusta

Origin blog.csdn.net/xiangguang_fight/article/details/112547957
Recomendado
Clasificación