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}`);

    总结:

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

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

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

  • 相关阅读:
    dbt macro 说明
    构建一个dbt 数据库适配器
    dbt 包的构建
    dbt 生产环境使用
    来自官方的一些dbt 最佳实践
    knowledge-repo 知识管理简单试用
    dbt 包管理
    dbt 的知识文档管理
    knowledge 开源知识管理系统
    hasura graphql server 集成gitlab
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14609647.html
Copyright © 2011-2022 走看看