Coincidencia de paréntesis izquierdo y derecho

        Dada una cadena que solo incluye '(', ')', '{', '}', '[', ']', juzgue si la cadena es válida.

        Una cadena válida debe satisfacer: el
        paréntesis izquierdo debe cerrarse con el mismo tipo de paréntesis derecho.
        El paréntesis de apertura debe cerrarse en el orden correcto.
        Tenga en cuenta que una cadena vacía se puede considerar una cadena válida.

Ejemplo 1:
        Entrada: "()"
        Salida: verdadera

Ejemplo 2:
        Entrada: “() [] {}”
        Salida: verdadero

Ejemplo 3:
        Entrada: "(]"
        Salida: falso

Ejemplo 4:
        Entrada: "([)]"
        Salida: falso

Ejemplo 5:
        Entrada: "{[]}"
        Salida: verdadera

        1. Solución: coloque la cadena en la pila, todos los corchetes izquierdos están en la estación, el marcador cnt se agrega 1, y luego todos los corchetes izquierdos que coinciden con el corchete derecho actual se extraen de la pila y el marcador cnt se reduce en uno; Después de completarlo, juzgue si cnt es cero, si cnt = 0, los paréntesis coinciden, de lo contrario no coinciden.
        El código central es el siguiente:
        //DoValid.cpp

bool DoValid(string& str) {
    
    
	string tmp;
	int cnt = 0;
	for (int i = 0; i < str.size(); i++) {
    
    
		if (str[i] == '{' || str[i] == '[' || str[i] == '(') {
    
    
			tmp.push_back(str[i]);
			cnt++;
		}
		else if (cnt != 0 && (tmp[cnt - 1] + 1 == str[i] || tmp[cnt - 1] + 2 == str[i])) {
    
    
			tmp.pop_back();
			cnt--;
		}
		else
			return false;
	}

	if (cnt != 0)
		return false;
	else
		return true;
}


class Solution {
    
    
public:
	bool isValid(string s) {
    
    
		return DoValid(s);
	}
};

        2.
        Fuente de comentarios : Número de pregunta de LeetCode: 20
        Enlace: Soporte efectivo de LeetCode No20

Supongo que te gusta

Origin blog.csdn.net/sanqima/article/details/106868671
Recomendado
Clasificación