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

上海网站优化排名公司哪家企业网页制作好

上海网站优化排名公司,哪家企业网页制作好,网上接网站开发不给钱怎么办,网络教育题目分析#xff1a; 其实这个计算器的实现并不难#xff0c;因为除了括号就剩下加减法嘛#xff0c;括号肯定比加减法先执行#xff0c;但是加减法是同级的#xff0c;只是会改变数字的正负号而已#xff0c;所以实现的逻辑并不是很难#xff0c;我们只需要一个栈…题目分析 其实这个计算器的实现并不难因为除了括号就剩下加减法嘛括号肯定比加减法先执行但是加减法是同级的只是会改变数字的正负号而已所以实现的逻辑并不是很难我们只需要一个栈来保存当前的符号sign即可. 遇到 ( 就将当前符号入栈 遇到 ) 就将当前符号弹出 遇到 就获取栈顶的符号注意不是弹出因为不改变方向所以从栈中取出来什么就是什么 遇到 -  也获取栈顶的符号注意不是弹出但是 - 会改变方向所以给取出来的符号取反即可 遇到数字 就一直向下计算直到下一个符号不是数字 最后把每个阶段算出来的结果相加就是答案 代码实现 class Solution {public int calculate(String s) {DequeInteger 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) {DequeDouble numbers new LinkedList();DequeCharacter 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(DequeDouble numbers,DequeCharacter 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://www.w-s-a.com/news/407616/

相关文章:

  • 茂名优化网站建设门户网站和部门网站的区别
  • 一尊网 又一个wordpress站点wordpress获取当前文章名称
  • 营销型网站多少钱新建网站的外链多久生效
  • 网站空间怎么选择tp5企业网站开发百度云
  • 网站建设saas排名成立公司的流程和要求及费用
  • 网站建设共享骨科医院网站优化服务商
  • 肯尼亚网站域名万能进销存软件免费版
  • 做商城网站价格上海做网站建设
  • 广州制作外贸网站公司阿里云网站模板
  • 做网站为什么要买服务器十堰城市建设网站
  • 西安网站seo技术厂家东莞如何制作免费的网页
  • 做旅游的网站的目的和意义极限优化wordpress
  • 做美食视频网站有哪些品牌营销策划机构
  • 佛山知名营销网站开发wordpress可视化编辑器排行
  • 石岩做网站哪家好石家庄做网站设计
  • 建设网站需要冠县做网站
  • 保定网站seo哪家公司好wordpress教程视频下载
  • 网站开发 哪些文档网站海外推广方法
  • 广西建设局网站首页如何做条形码网站怎么搞
  • 琼海建设网站wordpress 商城站下载地址
  • 网站需要多大数据库divider wordpress
  • 兰州北京网站建设网络广告推广网站
  • 宁晋网站建设森网站建设
  • 网站没有收录原因trel域名
  • 建设门户网站的目的和需求台州专业网站建设方案
  • 苏州网站建设系统方案成都行业网站设计
  • wordpress多说读者墙seo分析师招聘
  • 视频网站开发计划书wordpress文件详情
  • 重庆付费网站推广电商网站 开发周期
  • thinkcmf 做企业网站视频播放类网站建设费用