首页 > 代码库 > LeetCode-Evaluate Reverse Polish Notation[AC源码]
LeetCode-Evaluate Reverse Polish Notation[AC源码]
1 package com.lw.leet2; 2 3 /** 4 * @ClassName:Solution 5 * @Description: 6 * Evaluate the value of an arithmetic expression in Reverse Polish Notation. 7 * Valid operators are +, -, *, /. Each operand may be an integer or another expression. 8 * 9 * Some examples:10 * ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 911 * ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 612 * 13 * @Author LiuWei14 * @Date 2014年8月16日上午11:31:0515 * @Mail nashiyue1314@163.com 16 */17 public class Solution {18 19 private boolean isOper(String s){20 if(s.equals("+")){21 return true;22 }23 if(s.equals("-")){24 return true;25 }26 if(s.equals("*")){27 return true;28 }29 if(s.equals("/")){30 return true;31 }32 return false;33 }34 35 private String getOperRes(String num1,String num2,String oper){36 if(oper.equals("+")){37 return Integer.valueOf(num1)+Integer.valueOf(num2)+"";38 }39 else if(oper.equals("-")){40 return Integer.valueOf(num1)-Integer.valueOf(num2)+"";41 }42 else if(oper.equals("*")){43 return Integer.valueOf(num1)*Integer.valueOf(num2)+"";44 }45 else{46 return Integer.valueOf(num1)/Integer.valueOf(num2)+"";47 }48 }49 50 public int evalRPN(String[] tokens) {51 String[] resArr = new String[tokens.length];52 int index =0;53 for(int i=0;i<tokens.length;i++){54 if(isOper(tokens[i])){55 String num1 = resArr[index-1];56 String num2 = resArr[index-2];57 resArr[index-2] = getOperRes(num2, num1, tokens[i]);58 index--;59 }60 else{61 resArr[index] = tokens[i];62 index ++;63 }64 }65 return Integer.valueOf(resArr[0]);66 }67 68 public static void main(String[] args){69 Solution s = new Solution();70 // String [] tokens = {"4", "13", "5", "/", "+"};71 String [] tokens = {"2", "1", "+"};72 System.out.println(s.evalRPN(tokens));73 }74 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。