OJ lintcode 有效的括号序列

给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。
您在真实的面试中是否遇到过这个题?
Yes
样例
括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。

class Solution {
public:
    /**
     * @param s A string
     * @return whether the string is a valid parentheses
     */
    bool isValidParentheses(string& s) {
        // Write your code here
        map<char,char> m;
        m.insert(pair<char,char>('{','}'));
        m.insert(pair<char,char>('[',']'));
        m.insert(pair<char,char>('(',')'));
        
        char ch_arr[]={'{','[','('};
        set<char> s_in;
        s_in.insert(ch_arr,ch_arr+3);

        stack<char> char_stack;

        for(int i=0;i<s.length();i++){
            char ch=s[i];
            if( s_in.find(ch)!=s_in.end()){
                //是{,【,(
                char_stack.push(ch);
            }
            else{
                //是 },】,)
                if(char_stack.empty()==1){
                    return false;
                }
                if(m[char_stack.top()]!=ch){
                    return false;
                }
                else{
                    char_stack.pop();
                }
            }
        }
        
        //防止出现这种情况 s=“【”
        if(char_stack.empty()==1){
            return true;
        }
        else{
            return false;
        }
        //return true;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 难度:容易 要求: 给定一个字符串所表示的括号序列,包含以下...
    柒黍阅读 468评论 0 0
  • 描述 给定一个字符串所表示的括号序列,包含以下字符: (, ), {, }, [ 和 ], 判定是否是有效的括号序...
    zhujiaqqq阅读 903评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 本系列第三篇,承接前面的《浅谈机器学习基础》和《浅谈深度学习基础》。 自然语言处理绪论 什么是自然语言处理? 自然...
    我偏笑_NSNirvana阅读 17,910评论 2 68