力扣 (LeetCode)题目,有效的括号
题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合
思路:
把字符串的元素依次放到栈里,遇到匹配的括号就抵消,否则照常放到栈里,最后检查栈里元素的个数,为0就返回true,否则返回false
代码如下:
#include<iostream> #include<stack> using namespace std; class Solution { public: bool isValid(string s) { char temp; stack<char> stk; for (int i = 0; i < s.size(); i++) { if (stk.size() == 0) stk.push(s[i]); else { char tt = stk.top(); char tts = s[i]; bool ok1 = ((stk.top() == '(') && s[i] == ')'); bool ok2 = ((stk.top() == '[') && s[i] == ']'); bool ok3 = ((stk.top() == '{') && s[i] == '}'); if (ok1 || ok2 || ok3) stk.pop(); else stk.push(s[i]); } } if (stk.size() > 0) return false; return true; } };