(LC) 1047. Elimine todos los duplicados adyacentes en la cadena.

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

Supongo que te gusta

Origin blog.csdn.net/weixin_45567738/article/details/114603994
Recomendado
Clasificación