题解 | #逆波兰表达式求值#
逆波兰表达式求值
https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
package main
import "fmt"
import "strconv"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @return int整型
*/
func evalRPN( tokens []string ) int {
// write code here
stack := make([]int,0);
for i:=0;i<=len(tokens)-1;i++{
switch {
case tokens[i]=="+":
b := stack[len(stack)-1]
stack = stack[:len(stack)-1]
a := stack[len(stack)-1]
stack = stack[:len(stack)-1]
stack = append(stack, a+b)
case tokens[i]=="*":
b := stack[len(stack)-1]
stack = stack[:len(stack)-1]
a := stack[len(stack)-1]
stack = stack[:len(stack)-1]
stack = append(stack, a*b)
case tokens[i]=="-":
b := stack[len(stack)-1]
stack = stack[:len(stack)-1]
a := stack[len(stack)-1]
stack = stack[:len(stack)-1]
stack = append(stack, a-b)
case tokens[i]=="/":
b := stack[len(stack)-1]
stack = stack[:len(stack)-1]
a := stack[len(stack)-1]
stack = stack[:len(stack)-1]
stack = append(stack, a/b)
default :
num,err := strconv.Atoi(tokens[i]);
if err!= nil{
fmt.Printf("转换失败");
}
stack=append(stack, num);
}
}
return stack[0];
}
