首页 > 其他分享 >1106. 解析布尔表达式

1106. 解析布尔表达式

时间:2022-11-05 15:24:58浏览次数:97  
标签:expr2 ch 运算 st 1106 expr1 表达式 布尔

1106. 解析布尔表达式

给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。

有效的表达式需遵循以下约定:

  • "t",运算结果为 True
  • "f",运算结果为 False
  • "!(expr)",运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT)
  • "&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND)
  • "|(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 或的运算(OR)

原本看到困难还比较发愁,但看了下题。挺直白的一道模拟题。总之看到括号用栈就对了。。这难度就虚高的离谱,感觉昨天那道数学题是真的想不出来

class Solution {
public:
    bool parseBoolExpr(string expression) {
        stack<char>st;
        for(auto ch:expression){
            if(ch==',') continue;
            else if(ch!=')') st.push(ch);
            else{
                int t=0,f=0;
                while(st.top()!='('){
                    if(st.top()=='t')   t++;
                    else f++;
                    st.pop();
                }
                //cout<<t<<" "<<f<<endl;
                st.pop();
                //cout<<st.top()<<endl;
                char option=st.top();
                st.pop();
                if(option=='!')   st.push(t==1?'f':'t');
                else if(option=='&') st.push(f==0?'t':'f');
                else if(option=='|') st.push(t>0?'t':'f');
            }
        }
        return st.top()=='t';
    }
};

标签:expr2,ch,运算,st,1106,expr1,表达式,布尔
From: https://www.cnblogs.com/SkyDusty/p/16860246.html

相关文章

  • [LeetCode] 1106. 解析布尔表达式
    思路从题目中可以得出,一个表达式是通过n(n>=1)个表达式并列、嵌套而成。其实很像前缀表达式。这样我们很容易想到通过递归的方式来做,递归的边界条件就是"t"或者"f"......
  • 1106. 解析布尔表达式
    1106.解析布尔表达式classSolution{intindex;char[]ch;publicbooleanparseBoolExpr(Stringexpression){ch=expression.toCharArray(......
  • 内部类和lambda表达式
    如果有一个接口A,A里有eat()抽象方法,想要调用这个抽象方法,用传统模式就要写一个实现类B并重写eat()方法,再创建B对象调用这个方法如果用内部类可以简化代码量先定义两个接口......
  • java正则表达式
    参考:https://www.cnblogs.com/klb561/p/10850803.html1匹配验证-验证Email是否正确publicstaticvoidmain(String[]args){//要验证的字符串Stringstr=......
  • 按照 ExpressionVisitor 抽象类 思路 重新实现表达式 从左到右 递归解析 解决参数编号
     核心递归方法根据表达式类型跳转到具体的处理方法处理完后返回null跳出循环///<summary>///访问///</summary>///<pa......
  • 最全的常用正则表达式大全
    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。......
  • lambda表达式使用局部变量要用final
    为什么Lambda表达式(匿名类)不能访问非final的局部变量呢?  因为实例变量存在堆中,而局部变量是在栈上分配,Lambda表达式(匿名类)会在另一个线程中执行。如果在线程......
  • idea 方法格式化中param的groovy表达式
    groovyScript("defresult='';defparams=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();for(i=0;i<params.size();i++){if(params[......
  • 正则表达式
    获取花括号的数据包括花括号1publicstaticvoidmain(String[]args){2StringfileUrl="shncchdhd${whc$%^&edmcnvf123r}fdghjhjhhj#{bfghj}dcfhdv......
  • Java函数式编程(1):Lambda表达式(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从之前的Lambda表达式的演变过程可以知道,Lambda表达式其实是一个对匿名内部类的简化过程:去掉了多余的语法修饰,只保留最......