为啥我们在从中缀转换为前缀时必须反转字符串

Posted

技术标签:

【中文标题】为啥我们在从中缀转换为前缀时必须反转字符串【英文标题】:Why do we have to reverse the string when converting from infix to prefix为什么我们在从中缀转换为前缀时必须反转字符串 【发布时间】:2014-05-29 20:19:53 【问题描述】:

在将中缀转换为前缀的第一步中,有人可以简单地解释一下为什么我们要反转字符串吗?有没有其他的转换方法?

【问题讨论】:

【参考方案1】:

是的,如果您必须将中缀转换为前缀,那么您必须从右到左扫描字符串。

为什么不从左到右?

如果您从左到右扫描,那么您将需要了解字符串中的运算符。

示例 1:

Infix  : 2+3
Prefix : +23

现在,当您将其从左到右转换时,您应该了解尚未出现在字符串中的 + 知识。在这个特定示例中,这看起来很简单,现在考虑下面给出的另一个示例。

示例 2:

Infix  : 2+3*4/5-6*7
Prefix : -+2/*345*67

现在,如果您从左到右扫描,那么当您扫描字符串的第 0 个索引时,程序应该知道 - 这将出现在字符串的第 7 个索引中,这可能是一项繁重的工作。

所以最安全的做法是从右到左扫描字符串。

【讨论】:

以上是关于为啥我们在从中缀转换为前缀时必须反转字符串的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—5867. 反转单词前缀(字符串+双指针)—day36(周赛)

快乐水题2000. 反转单词前缀

为啥在 Python 2.7 中手动字符串反转比切片反转更糟糕? Slice 中使用的算法是啥?

LeetCode 第7题 整数反转

力扣每日一题 2000 反转单词前缀

LeetCode 2000 反转单词前缀[字符串] HERODING的LeetCode之路