题目描述:
给你一个字符串表达式 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}`);
总结:
类似本例中的解法还没遇到过接触之后一头雾水,虽然笨方法也可以有相同效果但是算法要的是思想,
在理解了原作者解法的思想之后才大悟;经过研究最终自己也成功实现了该思想的解题法;本次记录
为加深理解的实践;
一步一个脚印!!!继续加油
版权声明:本文为博主原创文章,如需转载,请标明出处。