【算法系列之二】反波兰式
生活随笔
收集整理的這篇文章主要介紹了
【算法系列之二】反波兰式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題:
用反波蘭式表示算術(shù)表達(dá)式的值。
有效運(yùn)算符是+,-,*,/。每個操作數(shù)可以是一個整數(shù)或另一個表達(dá)式。
一些例子:
?
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6答案:
?
?
public class Solution {public int evalRPN(String[] tokens) {Stack<String> stack = new Stack<String>();for(int i=0;i<tokens.length;i++){if(tokens[i].equals("+")){int n = Integer.parseInt(stack.pop());int m = Integer.parseInt(stack.pop());stack.push(String.valueOf(n+m));}else if(tokens[i].equals("-")){int n = Integer.parseInt(stack.pop());int m = Integer.parseInt(stack.pop());stack.push(String.valueOf(m-n));}else if(tokens[i].equals("*")){int n = Integer.parseInt(stack.pop());int m = Integer.parseInt(stack.pop());stack.push(String.valueOf(n*m));}else if(tokens[i].equals("/")){int n = Integer.parseInt(stack.pop());int m = Integer.parseInt(stack.pop());int re;if(m == 0){re = 0;}else{re = m/n;}stack.push(String.valueOf(re));}else {stack.push(tokens[i]);}}return Integer.parseInt(stack.pop());} }?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的【算法系列之二】反波兰式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP根据状态动态改变数据表格按钮
- 下一篇: wps如何自己制作流程图_WPS小技巧—