class Solution { public: bool isValid(string s) { stack<char> sta; for(int i = 0; i < s.length(); i++) { if(s[i] == '(' || s[i] == '[' || s[i] == '{') sta.push(s[i]); else if(sta.empty()) return false; else { if((sta.top() == '(' && s[i]==')') || (sta.top() == '{' && s[i]=='}') || (sta.top() == '[' && s[i]==']')) sta.pop(); else return false; } } if(sta.size()==0) return true; else return false; } };
这个题目搞得我有点头疼。
思路: 遍历串 S,遇见左括号进栈。遇见右括号就检查是否是栈顶元素的右括号。
注意点:样例有多余的右括号的时候,例如“{ ] }”,“ ] ”。