Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
题目链接:https://leetcode-cn.com/problems/valid-parentheses/
思路
如果了解栈的话,这题肥肠简单,左括号压栈,右括号出栈判断。
注意几个特殊样例:
1)"((()":string遍历完成后检查栈内是否还有剩余元素。
2)")(":出栈前判断栈内是否有元素可出。
class Solution {
public:
bool isValid(string s) {
if(s.empty()) return true;
if(s.size()%2) return false;
stack<char> record;
for(int i=0;i<s.size();++i){
if(s[i]=='(' || s[i]=='[' || s[i]=='{'){
record.push(s[i]);
}else{
if(record.size()<=0) return false;
char tmp = record.top();
if((tmp=='('&&s[i]==')') || (tmp=='['&&s[i]==']') || (tmp=='{'&&s[i]=='}')){
record.pop();
}
else {
return false;
}
}
}
if(record.size()!=0) return false;
else return true;
}
};