您现在的位置是:主页 > news > php网站怎么做后台管理/网站推广是做什么的
php网站怎么做后台管理/网站推广是做什么的
admin2025/4/19 17:25:50【news】
简介php网站怎么做后台管理,网站推广是做什么的,怎么做网站文件验证,做网站后台给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。 有效的表达式需遵循以下约定: "t",运算结果为 True "f",运算结果为 False "!(expr)"&…
给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。
有效的表达式需遵循以下约定:
"t",运算结果为 True
"f",运算结果为 False
"!(expr)",运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT)
"&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND)
"|(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 或的运算(OR)
示例 1:
输入:expression = "!(f)"
输出:true
示例 2:
输入:expression = "|(f,t)"
输出:true
示例 3:
输入:expression = "&(t,f)"
输出:false
示例 4:
输入:expression = "|(&(t,f,t),!(t))"
输出:false
提示:
1 <= expression.length <= 20000
expression[i] 由 {'(', ')', '&', '|', '!', 't', 'f', ','} 中的字符组成。
expression 是以上述形式给出的有效表达式,表示一个布尔值。
思路:这道题和括号匹配问题很像,我们采用栈模拟的方法, 当遇到右括号时考虑求出该括号内的布尔表达式并将其压入栈中,若括号前为‘!’,则根据括号的的‘t’或者‘f’取反,其余两个类似,按照布尔表达式的规则来就好了。
class Solution {public boolean parseBoolExpr(String expression) {int len = expression.length();Stack<Character> st = new Stack<>();for (int i = 0; i < len; i++) {if (expression.charAt(i) == '(' || expression.charAt(i)==',') continue;else if (expression.charAt(i) == ')') {boolean mark_f = false, mark_t = false;while (!st.isEmpty() && (st.peek() == 't' || st.peek() == 'f')) {if (st.peek() == 't') mark_t = true;if (st.peek() == 'f') mark_f = true;st.pop();}char c = st.pop();if (c == '!') {if (mark_f) st.add('t');else st.add('f');} else if (c == '&') {if (mark_f) st.add('f');else st.add('t');} else {if (mark_t) st.add('t');else st.add('f');}} elsest.add(expression.charAt(i));}return st.peek() == 't' ? true : false;}
}