题目描述:给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。

  2. 左括号必须以正确的顺序闭合。

  3. 每个右括号都有一个对应的相同类型的左括号。

方法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();
    }
};