Basic Calculator
来源:互联网 发布:c语言中换行符是 编辑:程序博客网 时间:2024/04/28 22:30
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
Note: Do not use the eval built-in library function.
程序转自讨论区:https://leetcode.com/discuss/39553/iterative-java-solution-with-stack
public int calculate(String s) { Stack<Integer> stack = new Stack<Integer>(); int result = 0; int number = 0; int sign = 1; for(int i = 0; i < s.length(); i++){ char c = s.charAt(i); if(Character.isDigit(c)){ number = 10 * number + (int)(c - '0'); }else if(c == '+'){ result += sign * number; number = 0; sign = 1; }else if(c == '-'){ result += sign * number; number = 0; sign = -1; }else if(c == '('){ //we push the result first, then sign; stack.push(result); stack.push(sign); //reset the sign and result for the value in the parenthesis sign = 1; result = 0; }else if(c == ')'){ result += sign * number; number = 0; result *= stack.pop(); //stack.pop() is the sign before the parenthesis result += stack.pop(); //stack.pop() now is the result calculated before the parenthesis } } if(number != 0) result += sign * number; return result;}
0 0
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- Basic Calculator
- 29.根据公式计算值
- objc_setAssociatedObject、objc_getAssociatedObject
- 一些基本属性随笔(不定时更新)
- 聊聊HTTPS和SSL/TLS协议
- 第25题:返回字符串中最长数字字符串的长度
- Basic Calculator
- 标准C++库中的异常类
- 汇正进销存——安装文档
- qt的QListwiget设置横向的排列
- android 版本控制
- 文件输入输出操作(字节流)
- 提高分类准确率的技术——组合分类
- Using Gazebo plugins with ROS 2
- 简单选择排序