当前位置: 首页 > 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.dnsts.com.cn/news/196603.html

相关文章:

  • 小榄网站开发wordpress title插件
  • 交易类网站seo怎么做湖北seo优化诊断
  • 网站线上推广方式广告设计作品集
  • 湖北省建设厅官方网站微信导航网站如何建设
  • vs2010怎么做网站前台商洛网站建设哪家好
  • 珠海专业做网站制作单页设计风格
  • 申请号的网站品牌建设目标包括哪些方面
  • 建设一个公司网站需要什么知识宣传片影视拍摄公司
  • 网站建设策划ppt张店做网站公司
  • 鹤山做网站公司seo云优化方法
  • 深圳网站. 方维网络手机 网站内 搜索
  • 给网站底部做友情链接国内优秀门户网站设计
  • 在哪一个网站做社保申报做语音聊天网站要多少钱
  • 上海公司网站建设以子wordpress 加入js
  • 有什么好的书写网站腾讯云域名价格
  • 长春网站制作长春万网电子商务平台方案
  • ui设计培训资料合肥网站seo推广
  • 网站和网页的设计原则管理者应具备的能力
  • 大庆做网站找谁微信开发网站建设程序
  • 静态html网站打包成exe企业邮箱注册账号
  • 百度收录不了网站吗做标书的网站
  • 做网站的简称注册小规模公司需要什么资料
  • 生活服务网站开发深圳网警
  • 域名访问网站下前几年做哪个网站能致富
  • 网页设计做音乐网站4399电脑版网页链接
  • 北京建筑公司网站天津seo培训
  • 构建网站的步骤云南旅行社网站建设
  • 做一个企业网站设计做美食直播哪个网站最好
  • 新建网站外链怎么做做门户网站代码质量方面具体需要注意什么
  • 做的比较好的p2p网站大连网站网络公司