leetcode#20 Valid Parentheses
给定一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
1 左括号必须用相同类型的右括号闭合。
2 左括号必须以正确的顺序闭合。
示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true
class Solution { public: bool isPair(char c1,char c2){ if((c1=='('&&c2==')')||(c1=='['&&c2==']')||(c1=='{'&&c2=='}')) return true; swap(c1,c2); if((c1=='('&&c2==')')||(c1=='['&&c2==']')||(c1=='{'&&c2=='}')) return true; return false; } bool isValid(string s) {//用栈最直观,顺序容器都可以 stack<char> stack1; for(int i=0;i!=s.size();++i) { char c=s[i]; if(c=='('||c=='['||c=='{') stack1.push(c); else{ if(stack1.empty()) return false; if(isPair(c,stack1.top())) stack1.pop(); else stack1.push(c); } } if(!stack1.empty()) return false; return true; } };