有效的括号(C++)

357 阅读1分钟

有效的括号

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

 

示例 1:

输入: s = "()"
输出: true

示例 2:

输入: s = "()[]{}"
输出: true

示例 3:

输入: s = "(]"
输出: false

 

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

我的代码:

class Solution {
    // 这题考查的是最简单的括号序列
public:
    bool isValid(string s) {
        unordered_map<char, char> mp;
        mp.insert(make_pair('{', '}'));
        mp.insert(make_pair('[', ']'));
        mp.insert(make_pair('(', ')'));

        stack<char> st;
        for (int i = 0; i < s.size(); i ++)
        {
            // 这个括号序列还会连着一对对的出现的
            if (!st.empty() && mp[st.top()] == s[i])
            {
                st.pop();
            }
            else 
            {
                st.push(s[i]);
            }
        }
        return st.empty();
    }
};