前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >227. 基本计算器 II

227. 基本计算器 II

作者头像
CaesarChang张旭
发布2021-06-01 21:02:22
3130
发布2021-06-01 21:02:22
举报
文章被收录于专栏:悟道

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5

代码语言:javascript
复制
class Solution {
    public int calculate(String s) {
        /**
        有一个记录上一次出现的符号变量的 pre
        加法直接入栈
        减法入栈他的相反数
        乘除 直接跟栈顶元素运算 在push
         有一点注意的是  这个数可以是多位的比如 32  
                所以应该判断当前字符是不是数字 是就 num=num*10+cur 知道遇到符号,在num 清零
         */
         Stack<Integer> stack=new Stack();
         char pre='+';
         char [] chars=s.toCharArray();
        
         int num=0;//记录当前数字
         for(int i=0;i<s.length();i++){
            

           if(Character.isDigit(chars[i])){
             
                 //如果是数字就*10+1
                 num=num*10+chars[i]-'0';
               
             }
             //不是数字而且不是空  或者是最后一位
            if(i==s.length()-1||!Character.isDigit(chars[i])&&chars[i]!=' '){
          
             if(pre=='+'){
                 stack.push(num);
             }else if(pre=='-'){
                   stack.push(-num);
             }else if(pre=='*'){
                   stack.push(stack.pop()*num);
             }else if(pre=='/'){
                  stack.push(stack.pop()/num);
             }
       
             //num清0 
             num=0;
             //更新前一个符号
             pre=chars[i];

             }            
         }

         
         int res=0;
         while(!stack.isEmpty()){
             //如果不是空就相加
             res+=stack.pop();
         }
         return res;

    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档