老师,关于leetcode150逆波兰表达式的问题

来源:6-1 栈的基础应用 Valid Parentheses

相信光变成光

2019-11-10

我在eclipse编译器上测试,结果正确。测试数据为[“2”,“1”,"+",“3”,"*"]
图片描述
在LeetCode用同样的数据测试,结果是0。这是为何?
图片描述
我的代码如下:

 public int evalRPN(String[] tokens) {
		Stack<String> stack=new Stack<>();
		int lNum; //运算符左边的数
		int rNum; //运算符右边的数
		int result=0;
		for(int i=0;i<tokens.length;i++){
			if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
				rNum=Integer.parseInt(stack.pop());
				lNum=Integer.parseInt(stack.pop());
			    if(tokens[i]=="+"){
			    	result=lNum+rNum;
			    }else if(tokens[i]=="-"){
			    	result=lNum-rNum;
			    }else if(tokens[i]=="*"){
			    	result=lNum*rNum;
			    }else{
			    	result=lNum/rNum;
			    }
			    stack.add(String.valueOf(result));
			}else{
				stack.push(tokens[i]);
			}
		}
		return result;
	 }
写回答

1回答

liuyubobobo

2019-11-10

所有的 == 都应该改成 .equals


String 的相等比较需要使用 .equals,因为是 Object


继续加油!:)

1
2
liuyubobobo
回复
相信光变成光
我不知道具体原因,应该和 JDK 版本有关。但不管怎样,Java Object 之间的比较应该用 equals 才是安全的。
2019-11-11
共2条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程