leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。实现一个函数,算出有几种可使该表达式得出 result 值的括号方法。

示例 1:

输入:s = "1^0|0|1", result = 0

输出:2
解释:两种可能的括号方法是
1^(0|(0|1))
1^((0|0)|1)

示例 2:

输入:s = "0&0&0&1^1|0", result = 1

输出:10

提示:

  • 运算符的数量不超过 19 个
通过次数
10.5K
提交次数
20.5K
通过率
51.2%


相关企业

提示 1
我们能试试所有的可能性吗?这看起来像什么?

提示 2
我们可以把每种可能性都看作是每个可以放置括号的地方。这意味着围绕每个操作符,使表达式在运算符上被分割。基线条件是什么?

提示 3
基本情况是我们有一个值,1或0。

提示 4
如果你的代码看起来很长,有很多的if(基于每个可能的操作符、“目标”布尔结果和左/右侧),考虑不同部分之间的关系。尽量简化代码。它不需要大量复杂的if语句。例如,考虑ORAND的表达式。两者可能都需要知道计算结果为true的数量。看看你可以重用哪些代码。

提示 5
着眼于你的递归上。有重复调用吗?可以将结果存起来吗?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
1 人在线
行 1,列 1
s =
"1"
result =
0
Source