leetcode Basic Calculator
来源:互联网 发布:java map源码解析 编辑:程序博客网 时间:2024/06/14 21:28
Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open (
and closing parentheses )
, the plus +
or minus sign -
, non-negative integers and empty spaces .
You may assume that the given expression is always valid.
Some examples:
"1 + 1" = 2" 2-1 + 2 " = 3"(1+(4+5+2)-3)+(6+8)" = 23
Note: Do not use the eval
built-in library function.
计算器问题,两个栈分别存储操作数和操作符,操作符存储+ -和(,当遇到)向前回溯计算直至第一个(,代表计算完毕一个括号,当栈顶元素为+或-时代表需要进行计算,代码:
public int calculate(String s) { int i=0; Stack<Character> op=new Stack<>(); Stack<Integer> num=new Stack<>(); while(i<s.length()){ while(s.charAt(i)==' '){ i++; } if(s.charAt(i)=='+'||s.charAt(i)=='-'||s.charAt(i)=='('){ op.push(s.charAt(i)); i++; } else if(s.charAt(i)==')'){ while(op.peek()!='('){ char temp=op.pop(); int num1=num.pop(); int num2=num.pop(); if(temp=='+'){ num.push(num1+num2); } else if(temp=='-') num.push(num2-num1); } op.pop(); while(!op.isEmpty()&&op.peek()!='('){ char temp=op.pop(); int num1=num.pop(); int num2=num.pop(); if(temp=='+'){ num.push(num1+num2); } else if(temp=='-') num.push(num2-num1); } i++; } else{ int k=0; while(i<s.length()&&s.charAt(i)>='0'&&s.charAt(i)<='9'){ k=k*10+(s.charAt(i)-'0'); i++; } if(!op.isEmpty()&&op.peek()=='+'){ op.pop(); int temp=num.pop(); num.push(temp+k); } else if(!op.isEmpty()&&op.peek()=='-'){ op.pop(); num.push(num.pop()-k); } else num.push(k); } } return num.peek();}
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 栈
- LeetCode #312: Burst Balloons
- C++ 文件读写详解(七)(ofstream,ifstream,fstream)
- JVM调优总结(7):调优方法
- xml的一中解析方法pull
- java实现生产者与消费者
- leetcode Basic Calculator
- #Deep Learning回顾#之2006年的Science Paper
- 项目完成过程中遇到的问题(更新结束)
- 三,MyBatis映射器及CRUD
- Android中的RecyclerView: 基础知识
- Android5.x:RecycleView(一):实现ListView + GridView + StaggeredGridLayou效果
- 关于谷歌webrtc源码国内镜像的使用问题,以及Kurento媒体服务器
- day16集合map里面的(hashtable,hashmap,treemap)的取出方式(keyset和entryset),获取该字符串的字母出现次数
- UNP-基本TCP编程-1