1047. Eliminar todos los duplicados adyacentes en una cadena
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 este momento. . Luego obtenemos la cadena "aaca", de la cual solo "aa" puede realizar la operación de deduplicación, por lo que la cadena final es "ca".
inmediato:
1 <= S.length <= 20000
S solo consta de letras minúsculas en inglés.
respuesta:
public String removeDuplicates(String S) {
char[] c = S.toCharArray();
int len = c.length;
Stack<Character> stack = new Stack<>();
for(int i=0; i<len; i++) {
if(stack.isEmpty() || c[i] != stack.peek()) {
stack.push(c[i]);
} else {
stack.pop();
}
}
StringBuilder str = new StringBuilder();
for(Character ch:stack) {
str.append(ch);
}
return str.toString();
}