Parênteses esquerdo e direito correspondentes

        Dada uma string que inclui apenas '(', ')', '{', '}', '[', ']', julgue se a string é válida.

        Uma string válida deve satisfazer: o
        parêntese esquerdo deve ser fechado com o mesmo tipo de parêntese direito.
        O parêntese de abertura deve ser fechado na ordem correta.
        Observe que uma string vazia pode ser considerada uma string válida.

Exemplo 1:
        Entrada: "()"
        Saída: verdadeiro

Exemplo 2:
        Entrada: “() [] {}”
        Saída: verdadeiro

Exemplo 3:
        Entrada: "(]"
        Saída: falso

Exemplo 4:
        Entrada: "([)]"
        Saída: falso

Exemplo 5:
        Entrada: "{[]}"
        Saída: verdadeiro

        1. Solução: Coloque a string na pilha, todos os colchetes esquerdos estão na estação, o marcador cnt é adicionado 1 e, em seguida, todos os colchetes esquerdos correspondentes ao colchete direito atual são retirados da pilha, e o marcador cnt é reduzido em um; Após a conclusão, julgue se cnt é zero, se cnt = 0, os parênteses são combinados, caso contrário, eles não são correspondidos.
        O código principal é o seguinte:
        //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.
        Fonte das observações : LeetCode Número da pergunta: 20
        Link: LeetCode Effective Bracket No20

Acho que você gosta

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