思路
遇到左括号就压栈,遇到右括号就判断栈顶是否匹配,不匹配就直接false,栈为空也直接false,匹配的话说明能配对则出栈。最后遍历完看栈里是否还有元素,有则说明有落单的左括号,否则就是合法的括号序列。
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> stk;
int m = s.size();
for(int i = 0; i < m; ++i) {
if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
stk.push(s[i]);
}
else if(stk.empty()) return false;
else if(stk.top() == s[i] - (')'-'(') ||
stk.top() == s[i] - ('}'-'{') ||
stk.top() == s[i] - ( ']' - '[' )
){
stk.pop();
}
else return false;
}
if(!stk.empty()) return false;
return true;
}
}; 
京公网安备 11010502036488号