【发布时间】:2014-01-28 14:39:22
【问题描述】:
我正在用 Java 实现 Shunting Yard Algorithm,作为我的 AP 计算机科学课程的一个附带项目。我用 Javascript 实现了一个简单的,只有基本的算术表达式(加法、减法、乘法、除法、求幂)。要将其拆分为一个数组,我所做的是找到每个运算符 (+-*/^),以及数字和括号,然后在它们周围放置一个空格,然后将其拆分为一个数组。例如,中缀字符串4+(3+2) 会变成4 + ( 3 + 2 ),然后在空格处分割。
但是,我觉得这种方法很慢,并且随着您开始添加数学函数(例如正弦、余弦、正切、绝对值等),实现起来变得越来越困难和效率低下。
将sin(4+3)-8 之类的字符串拆分为数组["sin","(" 4,"+",3,")","-",8] 的最佳方法是什么?
我可以为此使用正则表达式,但我不太了解它们,我正在努力学习它们,所以如果这对他们来说是最好的解决方案,请回答者解释一下它的作用?
【问题讨论】:
标签: java regex tokenize shunting-yard