soportes Leetcode20. eficaces

título Descripción

Incluye solamente un dado (,), {,}, [,] la cadena, la cadena se determina si es o no válida.

cadena válida que debe cumplir: el soporte izquierdo debe ser del mismo tipo de cierre de paréntesis derecho. paréntesis de apertura debe estar cerrada en el orden correcto. Tenga en cuenta la cadena vacía se puede considerar una cadena válida.

Ejemplo 1:

De entrada: "()"
de salida: true

Ejemplo 2:

De entrada: "(]"
Salida: falsa

solución del problema

Hay dos temas principales de esta solución, Ley contra la violencia y el método de pila.

método Stack (java)

Inspiración: Cuando nos enfrentamos a un problema que recientemente relevancia, considerar el uso de una pila de resolver el problema. Pero lo mismo es pila de resolver, se pueden implementar en una variedad de maneras específicas. En la siguiente manera utilizando esta idea: encuentros dejaron paréntesis, paréntesis derecho correspondiente puesta en la pila. Encuentro un paréntesis de cierre en la parte superior de la pila con la comparación actual.


class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        for (char c : s.toCharArray()) {
            if (c == '(') stack.push(')');
            else if (c == '[') stack.push(']');
            else if (c == '{') stack.push('}');
            else if (stack.isEmpty() || stack.pop() != c) return false;
        }
        return stack.isEmpty();
        
    }
}

Análisis de la complejidad

  • complejidad Tiempo: O (n)
  • la complejidad de las instalaciones: O (n)

Ley contra la violencia (Java)

Idea: sustituir la idea, como si lianliankan. N secuencias de aprovechar al máximo los ciclos, que pueden encontrar un juego paréntesis izquierdo y derecho, y luego reemplazar los soportes originales en torno a "" se elimina realmente. La circulación en el final, si no hay ningún signo de salir de la coincidencia, devuelve Falso.

class Solution {
	public boolean isValid(String s) {
		if(s==null || "".equals(s)) {
			return true;
		}
        
		while(s.contains("()") || s.contains("[]") || s.contains("{}")) {
		
			if(s.contains("()")) {
				s = s.replaceAll("\\(\\)","");
			}
	
			if(s.contains("[]")) {
				s = s.replaceAll("\\[\\]","");
			}
			if(s.contains("{}")) {
				s = s.replaceAll("\\{\\}","");
			}
		}
		
		return "".equals(s)? true : false;
	}
}
  • complejidad del tiempo: O ( norte 2 n ^ 2 )
  • la complejidad de las instalaciones: O (1)
Publicado 43 artículos originales · alabanza ganado 20 · vistas 1455

Supongo que te gusta

Origin blog.csdn.net/Chen_2018k/article/details/104547877
Recomendado
Clasificación