题目描述:给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
方法1:使用栈后进先出的特点,满足括号匹配的顺序
class Solution {
public:
bool isValid(string s) {
stack<char> check;
unordered_map<char,char>map = {
{')','('},
{']','['},
{'}','{'}
};
for(int i=0;i<s.size();i++){
if(s[i]=='(' || s[i]=='{' || s[i]=='[') check.push(s[i]);
else{
if(check.empty()) return false;
if(map[s[i]] != check.top()) return false;
else{
check.pop();
}
}
}
return check.empty();
}
};