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

扁平化网站特效wplounge wordpress主题

扁平化网站特效,wplounge wordpress主题,黄页88网企业名录搜索软件,做logo网站224. 基本计算器(困难) 方法:双栈解法 思路 我们可以使用两个栈 nums 和 ops 。 nums : 存放所有的数字ops :存放所有的数字以外的操作,/- 也看做是一种操作 然后从前往后做,对遍历到的字符做…

224. 基本计算器(困难)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法:双栈解法

思路

  • 我们可以使用两个栈 nums 和 ops

    • nums : 存放所有的数字
    • ops :存放所有的数字以外的操作,+/- 也看做是一种操作
  • 然后从前往后做,对遍历到的字符做分情况讨论:

    • 空格 : 跳过
    • ( : 直接加入 ops 中,等待与之匹配的 )
    • ) : 使用现有的 nums 和 ops 进行计算,直到遇到左边最近的一个左括号为止,计算结果放到 nums
    • 数字 : 从当前位置开始继续往后取,将整一个连续数字整体取出,加入 nums
    • +/- : 需要将操作放入 ops 中。在放入之前先把栈内可以算的都算掉,使用现有的 nums 和 ops 进行计算,直到没有操作或者遇到左括号,计算结果放到 nums
  • 一些细节:

    • 由于第一个数可能是负数,为了减少边界判断。一个小技巧是先往 nums 添加一个 0
    • 为防止 () 内出现的首个字符为运算符,将所有的空格去掉,并将 (- 替换为 (0-,(+ 替换为 (0+

代码

class Solution {
public:void replace(string &s) {int pos = s.find(" ");while (pos != -1) {s.replace(pos, 1, "");pos = s.find(" ");}}int calculate(string s) {// 存放所有数字stack<int> nums;// 为了防止第一个数是负数,在最前面补0nums.push(0);// 将所有空格去掉replace(s);// 存放所有操作符stack<char> ops;for(int i=0; i<s.size(); ++i) {char c = s[i];if(c == '(') ops.push(c);else if(c == ')'){// 计算到最近一个左括号为止while(!ops.empty()) {char op = ops.top();if(op != '(')   calc(nums, ops);else {ops.pop();break;}}}else {// 数字if(isdigit(c)) {int cur_num = 0;int j = i;// 将从 i 开始后面的连续数字整体取出,加入numswhile(j < s.size() && isdigit(s[j])) {cur_num = cur_num * 10 + (s[j++] - '0'); }nums.push(cur_num);i = j - 1;}// + -else {if(i > 0 && (s[i-1] == '(' || s[i-1] == '+' || s[i-1] == '-')) {nums.push(0);}// 有新操作要入栈时,把栈内可以算的算了while(!ops.empty() && ops.top() != '(') {calc(nums, ops);}ops.push(c);}}}while(!ops.empty()) calc(nums, ops);return nums.top();   }void calc(stack<int> &nums, stack<char> &ops) {if(nums.size() < 2 || ops.empty()) return ;int b = nums.top(); nums.pop();int a = nums.top(); nums.pop();char op = ops.top(); ops.pop();nums.push(op == '+' ? a+b : a-b); }
};

参考资料

  1. 【进阶补充】双栈解决通用「表达式计算」问题
http://www.yayakq.cn/news/309241/

相关文章:

  • 宠物网站建设方案书p2p理财网站开发框架
  • 网站开发过程中遇到的问题wordpress 网站logo
  • 服装公司网站设计手机和pc端网站建设
  • 大学网站的设计方案wordpress mysql配置
  • 湛江网站设计海外购物网站哪个最好
  • 创建网站英语在线制作电子公章免费公章在线生成
  • 网站建设服务器的选择方案有网站支付怎么做的
  • 会展相关app和网站的建设情况网站首页制作浩森宇特
  • 重庆网站外包国防教育网站建设方案
  • 企业网站源码 aspwordpress dokuwiki
  • 给境外合法网站做数据云匠网app
  • 阿里巴巴网站威海哪里做?o2o系统
  • 网站建设流程总结微信h5
  • 网站正建设中免费网站建设排行榜
  • 营销型网站建站推广二手商品网站制作
  • 襄阳旅游景点网站建设崆峒区城乡建设局网站
  • 杭州做营销型网站如何快速优化网站
  • 网站黑白代码汝南县网站建设
  • 怎么在网站上做宣传网店设计方案
  • 响应式网站开发哪家好常州网站建设智博
  • 网站建设开发公司微信公众号开发哪个网站微博做的最好
  • 网站生成小程序北京pk10做号网站
  • 做爰电影网站苏州企业网站建设
  • php网站有哪些wordpress手机上无法写文章
  • 网站网页转小程序教程网络组建与维护实训总结
  • 沙田网站建设公司宜昌网站网站建设
  • 网站建设加盟招商深圳品牌公寓
  • 网络推广和信息流优化一样么青岛优化网站多少钱
  • 优秀网站评析靓号网建站
  • 晋州网站建设北京网站备案查询