两个运算符以string形式输入
1
fourstring OP |
2
Fzzf 2017-01-22 19:23:21 +08:00
table ,然后直接查表
|
3
linboki 2017-01-22 19:25:09 +08:00 via Android
二维数组
|
4
hst001 2017-01-22 20:05:32 +08:00
逆波兰表达式,遇到*/就出栈计算
|
5
fourstring OP @hst001 我就是在参考 https://zh.wikipedia.org/zh-hans/%E8%B0%83%E5%BA%A6%E5%9C%BA%E7%AE%97%E6%B3%95
实现中缀式转逆波兰式。。。 |
6
steel1990 2017-01-22 21:12:36 +08:00 via Android
给每个运算符指定一个数字,然后比较数字大小,多简单
|
7
xjp 2017-01-22 21:17:01 +08:00 1
直接构造一个 map 记录每个操作符权值 然后相减啊
```js function compare(op1, op2){ var weightMap = {"x":1, "/":1, "+":0 ,"-":0 }; return weightMap [op1] - weightMap [op2]; } ``` |
8
fourstring OP @xjp 是在下输了
|
9
zhidian 2017-01-22 21:35:56 +08:00
写好测试例子,然后 eval 不就可以了。比如:
> eval("1"+"+"+"2"+"*"+"3") 7 说明是 * 优先级高。 |
10
erlanye 2017-01-22 21:58:10 +08:00
if else(或 switch case),没有比这个更优雅的了,上面的回复都是画蛇添足。
|
11
hxsf 2017-01-22 22:09:07 +08:00 via iPhone
在学编译原理?
定义个 运算优先级表 |