227. Basic Calculator II | Java最短代码实现
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 = '+';
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isDigit(ch)) {
nums = nums * 10 + ch - '0';
}
if ((ch == ' ' || Character.isDigit(ch)) && i < s.length() - 1)
continue;
if (sign == '+') {
stack.add(nums);
} else if (sign == '-') {
stack.add(-nums);
} else if (sign == '*') {
int temp = stack.pop();
stack.add(temp * nums);
} else if (sign == '/') {
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栈
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
