题目
计算逆波兰式(后缀表达式)的值
运算符仅包含"+","-","*“和”/",被操作数可能是整数或其他表达式
例如:
[“2”, “1”, “+”, “3”, “*”] -> ((2 + 1) * 3) -> 9↵ [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
思路
利用数据结构栈进行数据的存储与操作。
关键点:
1、使用Java自带的栈类型Stack stack=new Stack();
2、题干中给出的是字符串,数据运算时应该转化为Integer类型,使用Integer.valueOf(s)方法,此处不使用int类型,因为栈的泛型中只允许使用Integer。
3、利用switch结构分离出数据与操作符,从而进行不同的操作
ps:
- Integer.parseInt(str)是把一个把数字符串转化成int类型
- Integer.valueOf(str or num) 是把一个数字或者一个字符串转化为Integer类型
代码
import java.util.*;
public class Solution {
/**
*
* @param tokens string字符串一维数组
* @return int整型
*/
public int evalRPN (String[] tokens) {
// write code here
Stack<Integer> stack=