1047. Eliminar todos los duplicados adyacentes en una cadena (Eliminar todos los duplicados adyacentes en una cadena) | LeetCode Pregunta 1047

Eliminar todos los duplicados adyacentes en la cadena

Haga clic para ingresar LeetCode

Dada una cadena de letras minúsculas S, la operación de eliminación duplicada seleccionará dos letras adyacentes e idénticas y las eliminará.
En Sla aplicación de la eliminación duplicado repetida, no podemos continuar hasta que se eliminan.
Devuelve la cadena final después de completar todas las operaciones de deduplicación. La respuesta está garantizada para ser única.

Ejemplos

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"

Pronto

  1. 1 <= S.length <= 20000
  2. S Se compone solo de letras minúsculas en inglés.

Ideas para resolver problemas

El método de procesamiento para el enésimo carácter (N> 1):

  • Si S [N] == S [N + 1]
    1. S [N] y S [N + 1] son ​​duplicados y deben borrarse
    2. Determine si S [N + 2] es igual a S [N-1]. Si son iguales, los duplicados continuarán borrándose; si no son iguales, continúe haciendo el mejor juicio de la cadena de caracteres N + 2
  • Si S [N]! = S [N + 1]
    • Continúa juzgando por el personaje N + 1

Necesita hacer un buen juicio sobre si N + 2 y N-1 cruzan la frontera

Implementación de la solución JAVA

Haga clic para ver otros métodos de resolución de problemas.

public String removeDuplicates(String S) {

    if (S.length() <= 0) {
        return "";
    }

    Deque deque = new ArrayDeque<>();
    char[] charArray = S.toCharArray();
    deque.addLast(charArray[0]);

    for (int i = 1; i < charArray.length; i++) {
        if (!deque.isEmpty() && deque.peekLast().equals(charArray[i])) {
            deque.pollLast();
            continue;
        } else {
            deque.addLast(charArray[i]);
        }
    }

    StringBuilder result = new StringBuilder();
    while (!deque.isEmpty()) {
        result.append(deque.pollFirst());
    }

    return result.toString();
}
Publicado 7 artículos originales · ganó 3 · vistas 315

Supongo que te gusta

Origin blog.csdn.net/sl285720967/article/details/103135063
Recomendado
Clasificación