CSDN Android客户端 下载就送50C币又见人月神话 最流行的语言想学就学写博文,传代码,,送C币
【LeetCode】Basic Calculator 解题报告
分类:算法研究
【题目】
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-negativeintegers 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
【解析】
直接拿测试用例走一下下面的程序,就会明吧其巧妙之处。
public class Solution {public int calculate(String s) {Stack<Integer> stack = new Stack<>();stack.push(1);stack.push(1);int res = 0;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (Character.isDigit(c)) {int num = c – '0';int j = i + 1;while (j < s.length() && Character.isDigit(s.charAt(j))) {num = 10 * num + (s.charAt(j) – '0');j++;}res += stack.pop() * num;i = j – 1;} else if (c == '+' || c == '(') {stack.push(stack.peek());} else if (c == '-') {stack.push(-1 * stack.peek());} else if (c == ')') {stack.pop();}}return res;}}
上一篇【LeetCode】Implement Stack using Queues 解题报告
顶0踩0
主题推荐猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
核心技术类目
即使爬到最高的山上,一次也只能脚踏实地地迈一步。