栈-合法的括号序列

括号序列

http://www.nowcoder.com/questionTerminal/37548e94a270412c8b9fb85643c8ccc2

思路

遇到左括号就压栈,遇到右括号就判断栈顶是否匹配,不匹配就直接false,栈为空也直接false,匹配的话说明能配对则出栈。最后遍历完看栈里是否还有元素,有则说明有落单的左括号,否则就是合法的括号序列。

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        stack<char> stk;
        int m = s.size();
        for(int i = 0; i < m; ++i) {
            if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
                stk.push(s[i]);
            } 
            else if(stk.empty()) return false;
            else if(stk.top() == s[i] - (')'-'(') || 
                    stk.top() ==  s[i] - ('}'-'{') ||
                    stk.top() == s[i] - ( ']' - '[' )
                   ){
                stk.pop();
            }
            else return false;
        }
        if(!stk.empty()) return false;
        return true;
    }
};
全部评论

相关推荐

都送什么礼物吗?如果送的话,价格大概都是多少?辛苦大家给个参考啦!
程序员小白条:500,看自己经济能力吧,其实不用这种价格,除非这个mt特特特别好,毕竟你送mt都500,那送自己朋友,家里人不都四位数起步
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务