【发布时间】:2014-12-03 11:29:29
【问题描述】:
假设我有四个数字 A、B、C、D。
有四种数学方法可以在它们之间使用运算符来排列它们。对于我的示例,我将使用除法运算符,但运算符可以是任何东西。
((A/B)/C)/D
A/(B/(C/D))
(A/(B/C))/D
A/((B/C)/D)
(A/B)/(C/D)
如果数字为 1、2、3、4,则结果将分别为 0.0416、0.375、0.375、6、0.666。
所以如果字符串是
因此,如果我要用任何数字替换 A、B、C 和 D,并用任何运算符替换除法运算符,我该如何解析它,从而得到正确的结果?
我这样做的方式是使用 switch 语句,并假设哪个运算符位于某些字符串索引处,这有效,但仅适用于括号并不重要的第一个。我可以为五种不同的组合中的每一种创建 5 种不同的解析方法,但似乎会有更好的方法,而且我的方法似乎会变得非常笨拙,因为我必须使用嵌套的 switch 语句。
例如,如果字符串是
012345678910
"A/((B/C)/D))
我会在 5 处为 char 应用 switch 语句。然后用 B 和 C 进行操作并将该变量存储到假设 X 中。然后在 char 8 处的 switch 语句,应用于 D,存储在 Y,在 1 处切换,应用,打印结果。然后重复这 40 行代码 5 次,改变一些东西。
这是最好的方法还是有更好的方法?
谢谢!
【问题讨论】:
标签: java string parsing optimization