判断括号是否成对

就是在一个只有括号的字符串里的括号是否合法。 所谓合法就是成对,比如 "{}[](){([])}" 但是这样就是不对的 “[((((])” 以及包含的顺序不对 “([)]” 都判为非法。

bool isValid(string s) {
    unordered_map<char, int> parenthesesDic{
        {'{', 1}, {'[', 2}, {'(', 3}, {')', -3}, {']', -2}, {'}', -1}};

    stack<int> parentheses;
    
    for(auto c : s){
        auto val = parenthesesDic[c];
        
        if (val > 0){
            parentheses.push(val);
        }
        else if (parentheses.empty() || ((val + parentheses.top()) != 0)){
            return false;
        }
        else {
            parentheses.pop();
        }
    }
    return parentheses.empty()? true : false;
}

 

posted @ 2015-08-24 21:21  wu_overflow  阅读(345)  评论(0编辑  收藏  举报