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

新建网站费用html是建网站导航栏怎么做

新建网站费用,html是建网站导航栏怎么做,互联网app,装企erp管理系统这是一道 困难 题。 题目来自:leetcode 题目 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 注意: 不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 提示: s 由数字、‘’、‘-’…

这是一道 困难 题。

题目来自:leetcode

题目

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

注意: 不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

提示:

  • s 由数字、‘+’、‘-’、‘(’、‘)’、和 ’ ’ 组成
  • s 表示一个有效的表达式
  • +’ 不能用作一元运算(例如, “+1” 和 “+(2 + 3)” 无效)
  • 输入中不存在两个连续的操作符
  • 每个数字和运行的计算将适合于一个有符号的 32位 整数

示例 1:

输入:s = "1 + 1"
输出:2

示例 2:

输入:s = " 2-1 + 2 "
输出:3

示例 3:

输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23

解题思路

这道题是 实现一个包含“加减乘除”的基本计算器 的扩展,在表达式中增加了 括号 “(”, “)”正负数,但是删除了 “*” 和 “/”。

在原来的解题方法中补充以下几点:

  1. 括号的处理:
    • 如果遇到左括号:直接压入操作符栈。
    • 如果遇到右括号:将操作符栈中左括号后面的所有操作符出栈,并与数字栈进行计算合并。
  2. 正负数的处理:
    • 可以使用 补0 的思路,在正负数前面加一个“0”,将表达式转换为没有正负号的式子。

那么如何确定“+”和“-”是代表算符还是正负号呢?

  1. 如果 “+”和“-” 是第一个非空字符,那么代表是正负号。
  2. 如果 “+”和“-” 的前一个非空字符也是“+”或者“-”,那么代表是正负号。
  3. 如果 “+”和“-” 的前一个非空字符是 左括号 ,那么代表是正负号。

:补0的思路只能用于加减法.

代码实现


class Solution {private Deque<Integer> numStack = new LinkedList<>();private Deque<Character> optStack = new LinkedList<>();public int calculate(String s) {int n = s.length();boolean needZero = true;for(int i = 0; i < n; i++){char ch = s.charAt(i);if(this.isNumber(ch)){int num = 0;needZero = false;while(i < n && this.isNumber(s.charAt(i))){num = num * 10 + s.charAt(i) - '0';i++;}numStack.push(num);i--;}else if(ch == ' '){continue;}else if(ch == '('){optStack.push('(');needZero = true;continue;}else if(ch == ')'){while(optStack.peek() != '('){this.calc(numStack, optStack);}// 删除左括号optStack.pop();needZero = false;}else{if(needZero){numStack.push(0);}while(!optStack.isEmpty() && optStack.peek() != '('){this.calc(numStack, optStack);}optStack.push(ch);needZero = true;}}while(!optStack.isEmpty()){this.calc(numStack, optStack);}return numStack.pop();}private boolean isNumber(char ch){return ch >= '0' && ch <= '9';}private void calc(Deque<Integer> numStack, Deque<Character> optStack){int num2 = numStack.pop();int num1 = numStack.pop();char opt = optStack.pop();if(opt == '+'){  numStack.push(num1 + num2);}else{numStack.push(num1 - num2);}}}

复杂度分析

时间复杂度:O(N)O(N)O(N),N 为字符串长度。

空间复杂度:O(N)O(N)O(N),N 为字符串长度。

http://www.yayakq.cn/news/463727/

相关文章:

  • 网站地图怎么用网页传奇游戏单职业
  • 有关电子商务网站建设的论文临沂河东网站建设
  • 江阴建设网站昆明微商城开发
  • 如何看出网站用dede做的站长统计幸福宝
  • 做淘客必须有自己内部网站吗市场营销推广策划方案
  • 手机网站安全证书过期怎么处理自己搭建云手机服务器
  • 门户网站建设 工具广州黄埔建网站
  • 互联网制作网站开发公司发言稿观摩会
  • 开淘宝店怎么做充值网站wordpress 目录函数
  • 购物网站开发教程视频wordpress拿shell
  • 长沙建网站的公司一对一定制方案学软件工程培训就业机构
  • 兰州网站建设企业名录建网站权威机构
  • 网站建设_网站设计 app制作建站属于什么行业
  • 优秀个人网站设计欣赏网站关键词推广价格
  • 金融审核网站制作做网站公司 陕西渭南
  • 网站域名解析时间平面设计师招聘广告文案
  • 长沙正规官网建站网站开发人员是什么
  • 哪里制作网站好福州快速网站建设
  • qq官方网站wordpress点赞排行榜
  • 男通网站哪个好用网站设计主题有哪些
  • 网站充值接口怎么做长沙给中小企业做网站的公司
  • 百度商桥怎样绑定网站wordpress 学校模板
  • 网站搭建的人宝安区是深圳最差的区
  • 网站制作成品免费建站的平台
  • 天蝎网站推广优化网站建设属于什么税
  • 网站认证是什么意思怎么用源码搭建网站
  • 怎样搭建一个企业网站跳转短链接生成
  • 网盘怎么做电影网站开发自己的app多少钱
  • 网站建设技术风险爱站长工具综合查询
  • 游戏网站建设教程wordpress仪表盘改名