Basic CalculatorII
来源:互联网 发布:semantic ui 怎么 js 编辑:程序博客网 时间:2024/04/26 19:26
题目描述
Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.
You may assume that the given expression is always valid.
Some examples:
“3+2*2” = 7
” 3/2 ” = 1
” 3+5 / 2 ” = 5
题目解答
解题思路
如表达式:1+2-3*4/2+1。对于加减运算,与Basic Calculator类似,
可以直接将每个加减运算符前面的数字加入最终的结果中,
而对于乘除,需要先计算出乘法或者除法子表达式的值。—乘除直接计算
我们设置一个变量op表示当前的操作符,其中:
0:’+’或’-’
1:’*’
2:’/’
使用变量lastNum表示当前操作符前面的数字。
如果op = 1,那么计算就对运算符’*’前后两个数进行相乘,所得结果仍然保存在lastNum中。
如果op = 2,那么计算就对运算符’/’前后两个数进行相除,所得结果仍然保存在lastNum中。
如果op = 0,为加减运算。
没有括号操作变得简单
代码实现
public class Solution { public int calculate(String s) { if(s == null || s.length() == 0) return -1; int len = s.length(); int result = 0; int num = 0; int lastNum = 0; int sign = 1; int op = 0; for(int i = 0; i < len; i++){ char c = s.charAt(i); if(c >= '0' && c <= '9'){ num = 0; //判断正数位数 递增 注意 s[i] not c while(i < len && s.charAt(i) >= '0' && s.charAt(i) <= '9'){ num = num*10 +(s.charAt(i) - '0'); i++; } i--; switch(op){ case 0: lastNum = num; break; case 1: lastNum *= num; break; case 2: lastNum /= num; break; } }else if(c == '+'){ //之前的符号 result += (sign*lastNum); op = 0; sign = 1; }else if(c == '-'){ result += (sign*lastNum); op = 0; sign = -1; }else if(c == '*'){ op = 1; }else if(c == '/'){ op = 2; } } result += (lastNum*sign); return result; }}
0 0
- Basic CalculatorII
- @Basic
- Basic
- Basic
- BASIC
- @Basic
- @Basic
- basic
- Unix Basic
- BASIC 1
- basic 3
- BASIC 4
- BASIC 5
- BASIC 6
- BASIc b
- basic string
- [Visual Basic]
- oracle basic
- 南大软院大神养成计划——HTML和CSS基础课程(一)
- 蓝懿ios 技术内容交流和学习心得 11.20
- 我的linux笔记
- 【java】匿名内部类
- Eclipse下如何安装genymotion
- Basic CalculatorII
- 基于dede的一个自定义采集器
- Android Resource篇--- II 访问资源文件
- 提问的智慧
- 苹果Mac安装Dr.com
- STL中set的相关运用
- hdu 1856 并查序 特殊优化
- python初级了解
- 我的dubbo学习笔记