【发布时间】:2016-11-01 02:32:41
【问题描述】:
我在编码挑战中遇到了这个问题。我无法按时解决它,但我仍然想知道如何解决它。我对表达式树不是很熟悉,我发现很难对问题进行建模。描述是这样的:
输入: expression_tree | sequence_of_operations
输入是单行文本,其中包含表达式树和由| 字符分隔并以\n 换行符结束的操作序列。输入中允许使用空格,但应忽略。
表达式树是由 1 个字符的变量 A-Z 组成的序列,其子表达式树由括号 (expression_tree) 组成。示例:AB、A(B C D)、(AB)C((DE)F)
操作序列是一个字符串,带有字符R(反向)或S(简化)
Reverse 表示反转表达式树中所有内容的顺序。连续两次应用反向取消。
示例:(AB)C((DE)F) | R 应该打印 (F(ED))C(BA)
简化意味着删除表达式树及其每个子表达式树中第一个元素周围的括号。应用S 多次应该与应用S 一次具有相同的结果。
示例:(AB)C((DE)F) | S 应该打印 ABC(DEF)
输出:读取表达式树并将从左到右的操作顺序应用到表达式树,打印出不带字符的结果。
我最想知道的是如何建模表达式树来处理括号以及简化操作应该如何工作?
【问题讨论】:
标签: parsing tree expression