1106. 解析布尔表达式
题解:每个小括号都可以优先递归计算,dfs
class Solution {
int index;
char[] ch;
public boolean parseBoolExpr(String expression) {
ch = expression.toCharArray();
index = 0;
return dfs();
}
public boolean dfs() {
if (ch[index] == 'f') {
index++;
return false;
}
if (ch[index] == 't') {
index++;
return true;
}
// 如果是操作符,需要跳过'('
char op = ch[index];
index += 2;
// 如果是 ! or & 初始化为true
boolean res = true;
// 如果是 | 初始化为false
if (op == '|') res = false;
while(ch[index] != ')') {
// ',' 跳过
if (ch[index] == ',') {
index ++;
} else {
boolean nextBool = dfs();
// '|' 直接或运算
if (op == '|') {
res = res | nextBool;
} else {
// '&' or '!' 直接与运算, '!': true & !(false) = true , true & !(true) = false
res = res & nextBool;
}
}
}
// 跳过')'
index ++;
// 取反
if (op == '!') {
res = !res;
}
return res;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧