我正在用 Java 实现Shutting Yard 算法,作为我的 AP 计算机科学课程的一个附带项目。我用 Javascript 实现了一个简单的,只有基本的算术表达式(加法、减法、乘法、除法、求幂)。要将其拆分为一个数组,我所做的是找到每个运算符 ( +-*/^
) 以及数字和括号,并在它们周围放置一个空格,然后将其拆分为一个数组。例如,中缀字符串4+(3+2)
将被制成4 + ( 3 + 2 )
,然后在空格处拆分。
但是,我觉得这种方法非常慢,并且随着您开始添加数学函数(例如正弦、余弦、正切、绝对值等),实现起来变得越来越困难和效率低下。
将字符串拆分sin(4+3)-8
为数组的最佳方法是["sin","(" 4,"+",3,")","-",8]
什么?
我可以为此使用正则表达式,但我不太了解它们,我正在努力学习它们,所以如果这对他们来说是最好的解决方案,那么回答者能否解释一下它的作用?