leetcode:Basic Calculator
来源:互联网 发布:魔方秀软件下载 编辑:程序博客网 时间:2024/06/06 04:12
写一个支持+-和()的运算表达式的求解,因为题目比较简单,直接穷举计算,没有使用到优先级判断了
import java.util.HashMap;import java.util.Scanner;import java.util.Stack;public class Solution { public int calculate(String s) { Stack<Integer> nums = new Stack<Integer>(); Stack<Character> operation = new Stack<Character>(); int num = 0; //s = "(0+" + s + ")"; s = "(" + s + ")"; char[] ch = s.toCharArray(); for(int i = 0 ; i < ch.length;++i){ char c = ch[i]; if(Character.isDigit(ch[i])){ do{ num = num * 10 + ch[i++] - '0'; }while(i < ch.length && Character.isDigit(ch[i])); --i; nums.push(num); num = 0; continue; } if(c == ')'){ char topOp = operation.pop(); if(topOp == '('){ continue; } int b = nums.pop(); int a = nums.pop(); nums.push(doOp(a, topOp, b)); operation.pop(); }else if(c == '('){ operation.push(c); }else if(c == '+' || c == '-'){ char topOp = operation.peek(); if(topOp == '('){ operation.push(c); continue; } int a = nums.pop(); int b = nums.pop(); nums.push(doOp(b, topOp, a)); operation.pop(); operation.push(c); } } return nums.pop(); } public int doOp(int a, char op, int b){ if(op == '-') b = -b; return a + b; } public static void main(String[] args)throws Exception{ String s = ""; Scanner cin = new Scanner(System.in); Solution solution = new Solution(); while(!s.equals("bye")){ s = cin.nextLine(); int ans = solution.calculate(s); System.out.println(ans); } }}
0 0
- 【LeetCode】Basic Calculator && Basic Calculator II
- LeetCode - Basic Calculator & Basic Calculator II
- Leetcode之Basic Calculator & Basic Calculator II
- [leetcode] Basic Calculator
- Basic Calculator - LeetCode 224
- LeetCode Basic Calculator
- leetcode:Basic Calculator
- [leetcode][math] Basic Calculator
- [LeetCode] Basic Calculator
- Leetcode 224: Basic Calculator
- leetcode 224 Basic Calculator
- [LeetCode] Basic Calculator II
- [leetcode] Basic Calculator II
- [Leetcode] Basic Calculator
- leetcode Basic Calculator
- leetcode Basic Calculator II
- LeetCode-Basic Calculator
- leetcode Basic Calculator 栈
- HTML输入标签,下拉列表标签,文本域标签
- 第六单元
- [TMOOC]PhoneGap入门概述
- Zookeeper分布式锁
- 排序算法汇总总结
- leetcode:Basic Calculator
- 2015005-31 开讲啦 马未都:最枯燥的书对我的影响最大
- 用一个异地链表保存学生数据
- 怎样给电脑添加一个IP
- 数据库题:行转列
- 关于最近WORD转PDF时候出现空白页的解决办法
- jqgrid
- 林书豪分享玩乐动态
- java文件知识整理