我在面试论坛上发现了这个问题,并认为这是一个有趣的问题。有什么简单的方法可以在C++中完成这个任务吗?例如,假设我们有函数声明:将(0&(1 | 0)| 1)&(0 | 1))等字符串转换为相应的真值
bool _transform(string x);
/* x is a combination of (,), 0, 1, &, and | such that all expressions
start with a open and ending brace, and the function evaluates the
strings actual truth value
*/
是否有任何有效且相对简单的方法来执行此操作?我想递归式地使用括号,但问题似乎很难。
你能假设这个字符串是一个有效的表达式吗?我相当肯定这会改变实施相当多。 – Matthew
@Human对不起,不是澄清,但是,字符串将始终有效,错误检查不(可能)需要。为了简单起见,我只是说表达式总是正确的形式。 – user3340001
在表达式解析和评估中,这只是一个相当简单的练习,用逻辑运算符而不是算术运算。微不足道。查找“递归下降表达式解析”或Dijkstra调车码算法。 @Human这些算法可以检测到无效输入:它根本没有任何区别。 – EJP