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

总结:

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

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

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

原文地址:https://www.cnblogs.com/gamecc666/p/14609647.html