表达式合法判断(栈的使用)----去哪儿2016研发工程师编程题

来源:互联网 发布:oracle导入数据 编辑:程序博客网 时间:2024/04/30 01:33

[编程题] 表达式合法判断

写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)

给定一个表达式A,请返回一个bool值,代表它是否合法。

测试样例:
"[a+b*(5-4)]*{x+b+b*({1+2)}}"
返回:true
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:false
class ChkExpression {public:    bool chkLegal(string str) {        // write code here        stack<char> s ;        for ( int i = 0; i < str.size(); ++ i ) {            if ( str[i] == "{" )                 s.push( str[i] ) ;            if ( str[i] == "[" )                 s.push( str[i] ) ;            if ( str[i] == "(" )                 s.push( str[i] ) ;            if ( str[i] == ")" )                 s.pop() ;            if ( str[i] == "]" )                 s.pop() ;            if ( str[i] == "}" )                 s.pop() ;        }                return s.empty() ;    }};


注意,string[i] 只能和 ‘ ’ 配合使用,不能和 “ ” 配合使用,不然会报一下错误:



0 0