赞
踩
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
class Solution { public int calculate(String s) { //数字+符号 先乘除后加减 需要数据栈与符号栈 int res = 0, d = 0; char sign = '+'; LinkedList<Integer> nums = new LinkedList<>(); for(int i=0;i<s.length();i++){ char cur = s.charAt(i); if(cur >= '0'){//加减乘除和空格ASCII码都小于'0' 这一项筛选数字 // 存在大于10的实数,所以需要对连续数字进行移位相加 d = d * 10 -'0' + cur; // System.out.println(d+" "+cur); } if((cur < '0' && cur != ' ') || i == s.length() - 1){ if(sign == '+'){ nums.push(d); }else if(sign == '-'){ nums.push(-d); }else if(sign == '*' || sign == '/'){ int tmp = sign == '*'? nums.getFirst() * d : nums.getFirst() / d; nums.pop(); nums.push(tmp); } sign = cur; d = 0; } } for(;!nums.isEmpty();nums.pop()){ res += nums.getFirst(); // System.out.println(res); // System.out.println(d); } return res; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。