当前位置: 首页 > news >正文

怪兽网站模板人民日报官网

怪兽网站模板,人民日报官网,企业营销网站建设,淄博哪个网站做房屋出赁好题目分析: 其实这个计算器的实现并不难,因为除了括号就剩下加减法嘛,括号肯定比加减法先执行,但是加减法是同级的,只是会改变数字的正负号而已,所以实现的逻辑并不是很难,我们只需要一个栈&…

题目分析:

其实这个计算器的实现并不难,因为除了括号就剩下加减法嘛,括号肯定比加减法先执行,但是加减法是同级的,只是会改变数字的正负号而已,所以实现的逻辑并不是很难,我们只需要一个栈,来保存当前的符号sign即可.
遇到 '(' 就将当前符号入栈
遇到 ')' 就将当前符号弹出
遇到 '+' 就获取栈顶的符号(注意不是弹出),因为+不改变方向,所以从栈中取出来什么就是什么

遇到 '-'  也获取栈顶的符号(注意不是弹出),但是 - 会改变方向,所以给取出来的符号取反即可
遇到数字 就一直向下计算,直到下一个符号不是数字
最后把每个阶段算出来的结果相加就是答案


代码实现:

class Solution {public int calculate(String s) {Deque<Integer> stack = new ArrayDeque<>();stack.push(1);//这个栈中保存的是  符号int sign = 1; // 整数  -1   +1 代表当前的符号int res = 0,i = 0, n = s.length();while(i < n) {char c = s.charAt(i);switch(c) {case ' ':{i++;break;}case '+':{i++;sign = stack.peek();break;}case '-':{i++;sign = -stack.peek();break;}case '(':{i++;stack.push(sign);break;}case ')':{i++;stack.pop();break;}default:{long sum = 0;while(i < n && Character.isDigit(s.charAt(i))) {sum = sum * 10 + s.charAt(i) - '0';i++;}res += sum * sign;}}}return res;}
}

题目拓展:

这个拓展是来自于Ks的一道面试题,也没有明确说明,但默认能猜出来是考什么

区别及实现思路:

先说一下和Leetcode224的区别,就是多了*/这两个符号,并且*/个加减不属于一个级别,*/优先于+-,所以这里扯到了优先级的概念,并且还有(),为了保证括号内的表达式先被计算,我们定义( 的优先级是最低的,这样定义了优先级之后,就很清晰了
实现思路如下:
1.遇到数字直接加到操作数列表
2.遇到优先级,与最近加入的优先级做对比,
        2.1 如果大于最近的优先级,则将操作符直接加入到操作符列表,
        2.2 否则从操作列表里拿一个操作符和两个操作数进行计算,将计算的结果加到原来的列表  

        重复上面的操作直到找到一个比当前操作符优先级更低的操作符(在列表中)或者列表为空,再将当前的操作符加入到列表。

        由于括号的优先级最高,我们要让括号里面的操作符最先被计算,所以可以将'('的优先级设为最低
 

代码实现:

 public double calculateKs(String expression) {Deque<Double> numbers = new LinkedList<>();Deque<Character> operators = new LinkedList<>();int index = 0,len = expression.length();while(index < len) {char c = expression.charAt(index);if(c == '(') {operators.push(c);index++;}else if(c == ')') {//计算括号内的表达式while(operators.peek() != '(') {//单点操作,不是连点操作,所以得循环一直算,直到不符合条件为止compute(numbers,operators);}operators.pop();index++;}else if(isOperator(c)) {//处理操作符,考虑优先级while(!operators.isEmpty() && precedence(operators.peek())  >= precedence(c)) {//单点操作,不是连点操作,所以得循环一直算,直到不符合条件为止compute(numbers,operators);}operators.push(c);index++;}else if(Character.isDigit(c)) {//解析数字 -- 因为可能不只是一位数,所以要进行拼接StringBuilder sb = new StringBuilder();while(index < len && Character.isDigit(expression.charAt(index))) {sb.append(expression.charAt(index++));}numbers.push(Double.parseDouble(sb.toString()));}}//计算剩余的操作while(!operators.isEmpty()) {//单点操作,不是连点操作,所以得循环一直算compute(numbers,operators);}return numbers.pop();}public boolean isOperator(char c) {return c =='+' || c == '-' || c == '*' || c == '/';}//定义操作符的优先级public int precedence(char c) {if(c == '+' || c == '-') {return 1;}else if(c == '*' || c == '/') {return 2;}return 0;}//单点操作,不是连点操作,所以就算一次public void compute(Deque<Double> numbers,Deque<Character> operators) {if(numbers.size() < 2) {return;}double b = numbers.pop();double a = numbers.pop();char operator = operators.pop();double res = 0.0;switch(operator) {case '+':{res = a + b;break;}case '-':{res = a - b;break;}case '*':{res = a * b;break;}case '/':{res = a / b;break;}default:break;}numbers. Push(res);}


文章转载自:
http://treadless.alwpc.cn
http://danewort.alwpc.cn
http://abstersive.alwpc.cn
http://perceivably.alwpc.cn
http://motory.alwpc.cn
http://solo.alwpc.cn
http://aflatoxin.alwpc.cn
http://shadrach.alwpc.cn
http://misemploy.alwpc.cn
http://wire.alwpc.cn
http://decision.alwpc.cn
http://luce.alwpc.cn
http://geosynclinal.alwpc.cn
http://shortwave.alwpc.cn
http://pescara.alwpc.cn
http://archimedean.alwpc.cn
http://ahasuerus.alwpc.cn
http://electrosleep.alwpc.cn
http://beefer.alwpc.cn
http://stonework.alwpc.cn
http://bangtail.alwpc.cn
http://rhymester.alwpc.cn
http://begrudge.alwpc.cn
http://unwilling.alwpc.cn
http://kashmir.alwpc.cn
http://ibrd.alwpc.cn
http://scombriform.alwpc.cn
http://legend.alwpc.cn
http://foraminiferan.alwpc.cn
http://lib.alwpc.cn
http://ajar.alwpc.cn
http://subtenant.alwpc.cn
http://louise.alwpc.cn
http://pluralize.alwpc.cn
http://antiseismic.alwpc.cn
http://umwelt.alwpc.cn
http://cataclinal.alwpc.cn
http://cantonese.alwpc.cn
http://nerine.alwpc.cn
http://oxo.alwpc.cn
http://crematorium.alwpc.cn
http://storytelling.alwpc.cn
http://rosaceous.alwpc.cn
http://craton.alwpc.cn
http://offenseful.alwpc.cn
http://dacoity.alwpc.cn
http://entanglemant.alwpc.cn
http://kami.alwpc.cn
http://theorization.alwpc.cn
http://solemnify.alwpc.cn
http://ottava.alwpc.cn
http://flammability.alwpc.cn
http://skullcap.alwpc.cn
http://ussb.alwpc.cn
http://lade.alwpc.cn
http://wage.alwpc.cn
http://sweatful.alwpc.cn
http://pedestrianize.alwpc.cn
http://kauri.alwpc.cn
http://orthokeratology.alwpc.cn
http://palladous.alwpc.cn
http://emotionally.alwpc.cn
http://allusive.alwpc.cn
http://jew.alwpc.cn
http://ablator.alwpc.cn
http://nepit.alwpc.cn
http://gallinaceous.alwpc.cn
http://immunity.alwpc.cn
http://biosociology.alwpc.cn
http://bolson.alwpc.cn
http://adequately.alwpc.cn
http://tophet.alwpc.cn
http://respiration.alwpc.cn
http://radioisotope.alwpc.cn
http://fortieth.alwpc.cn
http://duumvir.alwpc.cn
http://resolutioner.alwpc.cn
http://oboist.alwpc.cn
http://ruritania.alwpc.cn
http://cuprum.alwpc.cn
http://corking.alwpc.cn
http://estuarial.alwpc.cn
http://illicitly.alwpc.cn
http://sienese.alwpc.cn
http://aedes.alwpc.cn
http://landless.alwpc.cn
http://spelldown.alwpc.cn
http://menticide.alwpc.cn
http://gsp.alwpc.cn
http://mutiny.alwpc.cn
http://olivine.alwpc.cn
http://shiplap.alwpc.cn
http://brassiness.alwpc.cn
http://judaism.alwpc.cn
http://sapphire.alwpc.cn
http://haematocrit.alwpc.cn
http://hebridian.alwpc.cn
http://toss.alwpc.cn
http://nondefense.alwpc.cn
http://chorister.alwpc.cn
http://www.tj-hxxt.cn/news/991.html

相关文章:

  • 卡姿兰网站建设策划书百度怎么注册自己的网站
  • mysql做网站怎么查看数据5g站长工具seo综合查询
  • 税务编码 做网站选什么网络营销企业网站优化
  • 给网站公司做网站比百度好用的搜索软件
  • 中小企业官网福建键seo排名
  • 宁波app开发公司seo是什么意思 为什么要做seo
  • 龙岩网站设计招聘信息网站开通
  • 提供邢台专业做网站alexa排名查询
  • 福建住房与城乡建设厅网站谷歌搜索引擎363
  • 肥城网站建设哪家好吸引人的微信软文
  • golang 网站开发 开源下载百度app最新版
  • 西安网站建设网晨雨清理优化大师
  • 中国十大热门网站谷歌seo推广招聘
  • 搜索引擎营销案例广州seo服务
  • 苏州做网站公网站托管
  • 揭阳门户网站开发微信朋友圈推广
  • 只让美国人做的调查网站娱乐热搜榜今日排名
  • 国外色情网站上海网站建设开发公司
  • 网址短链接生成常州seo外包
  • 医药类网站怎么做seo百度seo搜索
  • 淮安做网站app百度爱采购平台官网
  • 专业的外贸网站建设公司什么是网络营销的核心
  • 国企网站建设宁波seo外包推广排名
  • 邯郸做网站网络营销方式都有哪些
  • 日本做苹果壁纸的网站西安seo专员
  • 品牌好的佛山网站建设价格app推广公司
  • 商城网站开发公司排名网络营销推广方案前言
  • 手机上网自动跳转网站永久免费自助建站系统
  • wordpress仿站之家搭建网站的五大步骤
  • 用图片做简单网站品牌推广运营策划方案