我对社区很陌生,但我在这里看到了一些有用的帖子,所以我想我会问。
我有一个家庭作业问题,要求我们递归检查给定字符串是否是由以下两条规则(标准)给出的有效前缀表达式:
现在,我得到了评估,并查看了前缀到中缀算法,但我不能在我的生活中弄清楚如何只实现评估方法(因为我只需要检查是否它是有效的,所以不是+ ab例如)。
我知道这些问题的大多数实现是使用堆栈完成的,但是我不知道如何在这里递归地执行它...一些帮助将非常受欢迎。
答案 0 :(得分:3)
这样想。 (我不打算编写代码,因为这是你需要学习的东西。)
您想要检查某个字符串是否是前缀表达式,因此您有一个函数:
boolean isPrefix(string)
现在,字符串有两种方式可以作为前缀:
首先,检查字符串的长度是否为1,介于a-z之间,如果是,答案是肯定的。
接下来,您可以检查字符串是否以O开头。如果是,则需要测试字符串的其余部分以查看它是否由两个前缀表达式(FE)组成。
因此,您开始从1迭代到长度,并将每个子字符串(0-> i,i-> length)传递到isPrefix()。如果两个子串也是有效的前缀表达式,答案是肯定的。
否则,答案是否定的。
这几乎就是它,但是实施取决于你。
答案 1 :(得分:0)
我不确定我是否完全明白这一点,但我想你应该有一些方法,比如checkPrefixIn(String s)
只查看给定String
的一部分,返回true
如果它只是一个前缀false
,如果它只是一个运算符(或无效字符),或返回值checkPrefixIn(partOfS)
,其中partOfS
是输入的子串{{1 }}