1047-Elimina todos los duplicados adyacentes en la cadena

1. Descripción del título

Dada una cadena S que consta de letras minúsculas, la operación de eliminación duplicada seleccionará dos letras adyacentes e idénticas y las eliminará.
Repita la operación de deduplicación en S hasta que ya no se pueda eliminar.
La cadena final se devuelve después de que se completan todas las operaciones de deduplicación. Se garantiza que la respuesta será única.

Ejemplo:
Entrada: "abbaca"
Salida: "ca"
Explicación:
Por ejemplo, en "abbaca", podemos eliminar "bb". Dado que las dos letras son adyacentes y son iguales, este es el único elemento duplicado que se puede eliminar en esta vez. Después de eso, obtenemos la cadena "aaca", en la que solo hay "aa", que puede realizar la operación de deduplicación, por lo que la cadena final es "ca".

Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/remove-all-adjected-duplicates-in-string Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

2. Solución

  • Idea: trate el espacio de la matriz escaneada como una pila, compare los datos en la parte superior de la pila con los datos que se escanean, saque los datos de la parte superior de la pila si son iguales y empuje los datos que se escanean en la pila si son diferentes.
  • Análisis de complejidad: complejidad espacial O (1), complejidad temporal O (n).
  • El código se implementa de la siguiente manera
char * removeDuplicates(char * S){
    
    
    int i,j;//i为栈指针,j指向当前扫描数据

    for(i=0,j=1;S[j]!='\0';j++)
    {
    
    
        if(i>=0)//与栈顶数据比较
        {
    
    
            if(S[i]==S[j])//相同
            {
    
    
                i--;
            }
            else//不同
            {
    
    
                S[++i]=S[j];//将后一个数据入栈
            }
        }
        else//栈中已无数据,补充
        {
    
    
            S[++i]=S[j];
        }
    }

    S[i+1]='\0';
    return S;
}

Supongo que te gusta

Origin blog.csdn.net/qq_36439722/article/details/112061973
Recomendado
Clasificación