Leetcode: Basic Calculator
2015-12-19 06:12
260 查看
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
Notice:
1. 检查数,比如2位数,3位数
2. 用stack,遇到 '(' 就把之前的结果和符号push进stack, sign重置为1,sum重置为0. 遇到')'就把 当前结果*stack中的符号 再加上stack中之前的结果.
public class Solution { public int calculate(String s) { if (s==null || s.length()==0) return 0; Stack<Integer> st = new Stack<Integer>(); int sum = 0; int num = 0; int sign = 1; for (int i=0; i<s.length(); i++) { char cur = s.charAt(i); if (Character.isDigit(cur)) { num = num*10 + (int)(cur-'0'); } else if (cur == '+') { sum += sign*num; num = 0; sign = 1; } else if (cur == '-') { sum += sign*num; num = 0; sign = -1; } else if (cur == '(') { st.push(sum); st.push(sign); sum = 0; sign = 1; } else if (cur == ')') { sum += sign*num; num = 0; sum *= st.pop(); sum += st.pop(); } } if (num != 0) sum += sign*num; return sum; } }
相关文章推荐
- BugPhobia开发篇章:Beta阶段第VI次Scrum Meeting
- BugPhobia开发篇章:Beta阶段第VI次Scrum Meeting
- 前记
- [leetcode] 125. Valid Palindrome 解题报告
- MAYA中average normal
- cf596d
- Block Objects
- 连接Oracle与Hadoop(3) 使用OLH加载Hbase到Oracle
- BugPhobia开发篇章:Beta阶段第V次Scrum Meeting
- BugPhobia开发篇章:Beta阶段第V次Scrum Meeting
- wdcp/升级数据库mysql5.5/PHP5.5
- boost property_ptree库解析XML文件
- 关于各种视频网站去广告
- python 遍历hadoop, 跟指定列表对比 包含列表中值的取出。
- apache在mac下403问题
- 无刷新分页类
- 二进制
- php的spl
- sharepoint2010 升级到 sharepoint2013注意事项
- php7.0.1新版性能大提升尝试安装