题目描述: 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,"()"
和 "()[]{}"
是有效的但是 "(]"
和 "([)]"
不是。
解题思路:
依次字符串,若为括号左边,就压入栈;否则,判断栈顶元素是否与改元素成对,若成对则出栈,不然即false。再考虑“【”和“】”即可。
代码:
class Solution {
public:
bool isValid(string s) {
stack<char> sc;
int len = s.length();
for(int i = 0 ; i < len ; i ++) {
if(s[i] == '('||s[i] == '{'||s[i] == '[')
sc.push(s[i]);
else if(sc.empty()) return false;
else if(s[i] == ')')
if(sc.top() == '(') sc.pop();
else return false;
else if(s[i] == '}')
if(sc.top() == '{') sc.pop();
else return false;
else if(s[i] == ']')
if(sc.top() == '[') sc.pop();
else return false;
}
if(sc.empty()) return true;
else return false;
}
};