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

    题目描述:

      给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

      满足条件:

        1. 1<=s.length<=3*10^5

        2. s由数字,'+' , '-' , '(' , ')' ,和  ‘ ’ 组成

        3. s表示一个有效的表达式

    示例:

      输入:s="1+2"

      输出:3

      输入:s="1+(2+5)"

      输出:8

      输入:s="5-(2+1)"

      输出:2

    综合解法(javascript实现):

    console.log('基本计算器的实现');
    var formular_str='6-((3+2)-(2+1))'; //化简之后:6-3-2+2+1=4
    var formular_result=0;
    var cur_sign=1;
    var sign_stack=[1];
    for(let index=0;index<formular_str.length-1;index++){
        if(formular_str[index]==''){}
        else if(formular_str[index]=='('){
            sign_stack.push(cur_sign);
        }else if(formular_str[index]==')'){
            sign_stack.pop(sign_stack.length-1);
        }else if(formular_str[index]=='+'){
            cur_sign=sign_stack[sign_stack.length-1];
        }else if(formular_str[index]=='-'){
            cur_sign=-sign_stack[sign_stack.length-1]
        }else{
            formular_result+=cur_sign*(Number(formular_str[index]));
        }
    }
    console.log(`formular_result's value is ${formular_result}`);

    总结:

      类似本例中的解法还没遇到过接触之后一头雾水,虽然笨方法也可以有相同效果但是算法要的是思想,

      在理解了原作者解法的思想之后才大悟;经过研究最终自己也成功实现了该思想的解题法;本次记录

      为加深理解的实践;

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

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

  • 相关阅读:
    PHP foreach 循环
    C#导出Excel时间格式问题
    vs2015 key
    C# 的Chart
    线程暂停与继续实现
    CCNA网络工程师学习进程(2)基本的网络设备
    CCNA网络工程师学习进程(1)网络的基本概述
    安卓学习进程(3)安卓开发工具的简介
    安卓学习进程(2)Android开发环境的搭建
    安卓学习进程(1)移动平台开发的简介
  • 原文地址:https://www.cnblogs.com/gamecc666/p/14607197.html
Copyright © 2011-2022 走看看