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

教育网站怎么做引导栏的网站优化培训班

教育网站怎么做引导栏的,网站优化培训班,南京疫情最新动态,天津个人做网站题目描述: 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符串作为数学表达式计…

题目描述:
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。
注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

在这里插入图片描述

解题思路:
使用栈:数字栈
思路:* / 直接算,+ - 后面再算,最后只剩 + -,再while(!numStack.isEmpty){计算加减就行}
1.1 遍历字符串,是数字直接放到数字栈
1.2 若遇到字符,若是 * /,则从栈中弹出一个num进行计算
若是 +,则直接压入栈中
若是 -,则变成相反数再直接压入栈中
1.3 最后遍历数字栈,将所有数字求和即为表达式的结果

import java.util.Stack;/*** @author: Arbicoral* @Description: 输入字符串 “3+2*2”,求结果。*/
public class KuaiShou {public static void main(String[] args) {String s = "33+23*2-33-53/5";System.out.println(s + " = " + calculate1(s));System.out.println(s + " = " + calculate2(s));}/*** 使用栈:数字栈* 思路:* / 直接算,+ - 后面再算,最后只剩 + -,再while(!numStack.isEmpty){计算加减就行}* 1.1 遍历字符串,是数字直接放到数字栈* 1.2 若遇到字符,若是 * /,则从栈中弹出一个num进行计算若是 +,则直接压入栈中若是 -,则变成相反数再直接压入栈中* 1.3 最后遍历数字栈,将所有数字求和即为表达式的结果* @return 表达式的结果*/public static int calculate2(String expression) {int num = 0;int len = expression.length();Stack<Integer> numStack = new Stack<>();// 数字栈char operator = '+';// 要放到循环的外面,如果放到里面则每次的操作符都是 '+',而我们只需要第一次是 + 即可,后面都要不断更新的for (int i = 0; i <= len - 1; i++) {char c = expression.charAt(i);if (Character.isDigit(c)){num = num * 10 + (c - '0');}if (!Character.isDigit(c) && c != ' ' || i == len-1){switch (operator) {case '+' -> numStack.push(num);case '-' -> numStack.push(-num);case '*' -> numStack.push(numStack.pop() * num);case '/' -> numStack.push(numStack.pop() / num);}// 重置 num 和 操作符; 注意:不能放到 if 外面,不然每读取表达式中的一个字符num 和 operator都会变,而我们只需要operator不是数字num = 0;operator = c;}}// 出 for()此时栈中只剩下 + -操作int res = 0;while (!numStack.isEmpty()){res += numStack.pop();}return res;}/*** 思路:将字符串中的操作符全部变成 + ,即遇到 - 的则再取一个,然后变成对应的负数,遇到 * / 就直接计算,最后将栈中的所有数相加即可*/public static int calculate1(String expression) {Stack<Integer> stack = new Stack<>();int num = 0;char operation = '+';for (int i = 0; i < expression.length(); i++) {char c = expression.charAt(i);if (Character.isDigit(c)) {num = num * 10 + (c - '0');}if (!Character.isDigit(c) && c != ' ' || i == expression.length() - 1) {if (operation == '+') {stack.push(num);} else if (operation == '-') {stack.push(-num);} else if (operation == '*') {stack.push(stack.pop() * num);} else if (operation == '/') {stack.push(stack.pop() / num);}num = 0;operation = c;}}int result = 0;while (!stack.isEmpty()) {result += stack.pop();}return result;}
}
http://www.hkea.cn/news/892228/

相关文章:

  • 登录官方网站装修公司网络推广方案
  • 设计网站官网入口网站搜索优化方法
  • 网站优化qq群山东做网站
  • wordpress icomoon太原seo快速排名
  • 中华建设杂志网站记者数据指数
  • 网站开发测试情况南召seo快速排名价格
  • 上海仓储公司小红书seo优化
  • 南京建设公司网站网络营销整合推广
  • wordpress更改语言沈阳seo优化
  • wordpress免费网站世界大学排名
  • 做网站的属于什么专业?百度爱采购竞价推广
  • 网站建设一年多少恰东莞网站到首页排名
  • 新企业网站应该怎么做SEO优化广告联盟有哪些
  • 手机app开发网站建设软文推广文章案例
  • 网站自然排名百度经验官网登录
  • dz网站模板沧州网站优化公司
  • 桂林论坛天涯社区培训行业seo整站优化
  • 做伊瑞尔竞技场的网站搜索引擎简称seo
  • 46云虚拟主机股票发行ipo和seo是什么意思
  • 新泰做网站菏泽seo
  • 网站建设排名东莞seo收费
  • 做网站前后端的发布流程自己如何制作网站
  • 网站营销与推广策略百度一下官网首页百度
  • 网站建设张世勇100个免费推广b站
  • 网络营销的常用工具百度关键词优化点击 教程
  • 公司网站要怎么做少儿编程培训机构排名前十
  • 一个好的网站是什么样的商家联盟营销方案
  • 网站解除域名绑定网站广告收费标准
  • 郑州的建设网站有哪些手续免费发布推广信息的平台有哪些
  • 手机做网站软件优化服务平台