10.22算法

发布时间 2023-10-22 10:46:23作者: 卧龙丹心

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

有效字符串需满足:

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

示例 1:

输入:s = "()"
输出:true
示例 2:

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

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

提示:

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

C++

 

class Solution {
public:
    bool isValid(string s) {
                stack<char> st;
    map<char,char> mmatch;
    mmatch[')'] = '(';
    mmatch[']'] = '[';
    mmatch['}'] = '{';
    for(auto c:s){
        if(c=='(' || c=='[' || c=='{'){
            st.push(c);
        }
        else{
            if(st.empty()){
                return false;
            }
            auto need_match = mmatch[c];
            if(st.top() == need_match){
                st.pop();
            }
            else return false;
        }
    }
    if(st.empty())
        return true;
    else return false;
    }
};
关键:判断为空的地方需要设置,以防出现)}这种情况没有处理