java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

原题链接:227. Basic Calculator II
相似博文:224. Basic Calculator | Java最短代码实现
【思路】
本题考查字符串和数学运算的结合。有两种做法:第一种做法是第一遍先扫描乘除,第二遍扫描加减;第二种做法是将中间结果暂时压入中,遇到乘除,则从栈顶取出元素,再进行乘除运算,过后再压栈。本解法采用第二种做法:

public int calculate(String s) {
        Stack<Integer> stack = new Stack<Integer>();
        int nums = 0, result = 0;
        char sign = &#39;+&#39;;
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (Character.isDigit(ch)) {
                nums = nums * 10 + ch - &#39;0&#39;;
            }
            if ((ch == &#39; &#39; || Character.isDigit(ch)) && i < s.length() - 1)
                continue;
            if (sign == &#39;+&#39;) {
                stack.add(nums);
            } else if (sign == &#39;-&#39;) {
                stack.add(-nums);
            } else if (sign == &#39;*&#39;) {
                int temp = stack.pop();
                stack.add(temp * nums);
            } else if (sign == &#39;/&#39;) {
                int temp = stack.pop();
                stack.add(temp / nums);
            }
            sign = ch;
            nums = 0;
        }
        while (!stack.isEmpty())
            result += stack.pop();
        return result;
    }

109 / 109 test
cases passed. Runtime: 42
ms Your runtime beats 55.31% of javasubmissions.
欢迎优化!
leetcodeJava栈

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。