两个运算符以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%3%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 ![]() 直接构造一个 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 在学编译原理? 定义个 运算优先级表 |