zoukankan      html  css  js  c++  java
  • 力扣 227 :基本计算器(II)

    题目描述:

      给你一个字符串表达式 s,实现一个基本的计算器来计算并返回结果;

      整数除法保留整数部分。

      提示:

      • 1 < s.length <=3*10^5;
      • s 由整数和算符(‘+’,‘-’,‘*’,‘/’)组成,中间由一些空格隔开
      • s 是一个有效的表达式
      • 表达式中的所有整数都是非负整数,且在范围[ 0, 2^31-1 ]内
      • 题目数据保证答案是一个32-bit整数 

    示例:

      输入:s='3+2*2'

      输出:7

      输入:s="3/2"

      输出:1

    综合解法(javascript实现):

      

    var formular_str='5-2*1/2'; //合格的字符串公式
    var sign='+'; //初始化上一个操作符
    var formular_str_sum=0; //初始化计算结果
    var stack_obj=new Stack(); //js模拟栈实现请参考之前文章去除重复字符
    
    for(let index=0;index<formular_str.length;index++){
         if(formular_str[index]==''){}
         else if(['+','-','*','','/'].includes(formlar_str[index])){
             sign=formular_str[index];
         }else{
             if(sign=='-'){
                 stack_obj.push(-1*Number(formular_str[index]));
             }else if(sign=='+'){
                 stack_obj.push(Number(formular_str[index]));
             }else if(sign=='*'){
                 let temp=stack_obj.pop()*Number(formular_str[index]);
                 stack_obj.push(temp);
             }else if(sign=='/'){
                 let temp=parseInt(stack_obj.pop()/Number(formular_str[index]));
                 stack_obj.push(temp);
             }
         }
    }
    while(stack_obj.size!=0){
        formular_str_sum+=stack_obj.pop();  
    }
    console.log(`the forular_str_sm is ${formular_str_sum}`);

    总结:

      吸收了上一题的精髓之后,遇到这一题相对来说轻松好多,总体上没有大问题;

      一步一个脚印!!!继续加油

    版权声明:本文为博主原创文章,如需转载,请标明出处。

  • 相关阅读:
    前端/html5效果收藏
    Fiddler 网页采集抓包利器
    Es6 类class的关键 super、static、constructor、new.target
    js 倒计时毫秒级别显示
    雅虎34条军规
    javascript 异步请求封装成同步请求
    微信小程序 base64图片在canvas上画图
    chrome inspect 远程调试H5
    webpack 打包调试
    微信小程序云函数 添加数据到数据库
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14609647.html
Copyright © 2011-2022 走看看