Leetcode combate: 20. soportes eficaces

tema:

Incluye solo a '(', ')' cadena dada, '{', '}', '[', ']', y determinar si la cadena es válida.
cadena válida debe cumplir:

  1. ménsula izquierda debe ser cerrado por un paréntesis de cierre del mismo tipo.
  2. 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

输入: "()"
输出: true

Ejemplo 2

输入: "()[]{}"
输出: true

Ejemplo 3

输入: "(]"
输出: false

Ejemplo 4

输入: "([)]"
输出: false

Ejemplo 5

输入: "{[]}"
输出: true

algoritmo

class Solution {
public:
    bool isValid(string s) {
        int historyS[10000];
        int temp;
        int j = 0;
        unordered_map<char, int> Symbol{ {'{', 1}, { '}', -1}, {'[', 100}, {']', -100}, {'(', 1000}, {')', -1000} };
        if (Symbol[s[0]] < 0 )
            return 0;
        if (s.length() == 0)
            return 1;
        else
            historyS[0] = Symbol[s[0]];
        for (int i = 1; i < s.length(); i++) {
            int temp = Symbol[s[i]];
            if (temp < 0) {
                if (j <= -1 || temp + historyS[j] != 0 )
                    return 0;
                j--;
            }
            else {
                historyS[j + 1] = temp;
                j++;
            }
        }
        return j == -1 ? 1 : 0;
    }
};

resultados:

Los primeros cien doble

Aquí Insertar imagen Descripción

Publicados 129 artículos originales · ganado elogios 34 · vistas 8028

Supongo que te gusta

Origin blog.csdn.net/qq_44315987/article/details/104883694
Recomendado
Clasificación