我有编程面试,由 3 名面试官组成,每人 45 分钟。虽然前两位面试官给了我 2-3 个简短的编码问题(即反向链表,使用 rand(5) 实现 rand(7) 等),但第三位面试官使用了整个时间段来回答单个问题:
您将得到代表正确格式和带括号的布尔表达式的字符串,该表达式由字符 T、F、&、|、!、(、) 和空格组成。T 代表 True,F 代表 False,& 代表逻辑与,| 对于逻辑或,!为否定。& 的优先级高于 |。这些字符中的任何一个都后跟输入字符串中的空格。我要评估表达式的值并打印它(输出应该是 T 或 F)。示例:输入:!( T | F & F ) 输出:F
我试图实现 Shutting Yard 算法的变体来解决问题(以后缀形式输入,然后评估后缀表达式),但未能在给定的时间范围内正确编码,所以我最终用伪代码和文字解释了我通缉。
我的招聘人员说前两个面试官给了我“HIRE”,而第三个面试官给了我“NO HIRE”,由于最终决定是“逻辑与”,他感谢我的时间。
我的问题:你认为这个问题是否适合在白板上编写代码?40分钟?对我来说,如此短的时间段和白板尺寸似乎有很多代码。有没有比使用分流场算法更短的方法来解决这个问题?