标签:char calculate int Solution II flag 计算器 227 Stack
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<Integer>();//例如 3 + 5 / 2 + 4 * 3
int l = s.length();
int num = 0;
char flag = '+';//记录符号
for(int i=0;i<l;i++){
if(Character.isDigit(s.charAt(i))){
num = num * 10 + (s.charAt(i)-'0');//记录数字
}
if(!Character.isDigit(s.charAt(i))&&s.charAt(i)!=' '||i==l-1){//出现符号或者遍历到最后,需要将数据压入栈内的情况
switch (flag){
case '+':
stack.push(num);//“+”,压入原数字
break;
case '-':
stack.push(-num);//“-”,压入原数字的负数
break;
case '*':
stack.push(stack.pop() * num);//第一次出现这种情况时,字符串已经遍历到最后,flag为*
break;
case '/':
stack.push(stack.pop() / num);//第一次出现这种情况时,字符串已经遍历到第二个加号,flag仍然是“/”
}
flag = s.charAt(i);
num = 0;
}
}
int ans = 0;
while(!stack.isEmpty()){
ans = ans + stack.pop();
}
return ans;
}
}
标签:char,calculate,int,Solution,II,flag,计算器,227,Stack 来源: https://blog.csdn.net/toutao/article/details/121915206
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。