【LeetCode】Basic Calculator 解题报告

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网站的观点或立场

核心技术类目

即使爬到最高的山上,一次也只能脚踏实地地迈一步。

【LeetCode】Basic Calculator 解题报告

相关文章:

你感兴趣的文章:

标签云: