基本计算器问题

编程入门 行业动态 更新时间:2024-10-27 14:31:00

基本<a href=https://www.elefans.com/category/jswz/34/1765079.html style=计算器问题"/>

基本计算器问题

目录

  • Leetcode上有几道基本计算器的问题
    • 题目列表
      • [224. 基本计算器](/)
      • [227. 基本计算器 II](/)
      • [772. 基本计算器 III](/)
      • [770. 基本计算器 IV](/)
    • 分析
    • 代码实现
      • 递归
      • 迭代
      • 中缀转后缀
      • python内置函数

Leetcode上有几道基本计算器的问题

题目列表

224. 基本计算器

支持加减操作

227. 基本计算器 II

支持加减乘除操作

772. 基本计算器 III

支持加减乘除和括号操作
这个是vip题目,可以在这里牛客或这里lintcode看到替代的题目,是一样的

770. 基本计算器 IV

表达式求值

分析

这里面设计到的一个共同的问题就是计算一个表达式的值的问题,我们可以使用递归或者栈的方式来解决这个问题。实际上递归也是栈的应用,两种方法是一样的。

代码实现

递归

class Solution {
public:int parseNum(string& s, int& i) {int n = 0;while(i < s.length() && isdigit(s[i])) n = s[i++] - '0' + 10 * n;return n;}int parseExpr(string& s, int& i) {vector<int> nums;char op = '+';for (; i < s.length() && op != ')'; i++) {   //右括号可以结束递归if (s[i] == ' ') continue;int n;if(s[i] == '(') n = parseExpr(s, ++i); //左括号开始递归else n = parseNum(s, i); //求值switch(op) {// 加法和减法都放到nums里case '+' : nums.push_back(n); break;		//加法case '-' : nums.push_back(-n); break;		//减法// 乘法和除法可以直接算case '*' : nums.back() *= n; break;			//乘法case '/' : nums.back() /= n; break;			//除法}            op = s[i];}return accumulate(nums.begin(), nums.end(), 0);}int calculate(string &s) {int i = 0;return parseExpr(s, i);}
};

迭代

中缀转后缀

python内置函数

更多推荐

基本计算器问题

本文发布于:2023-12-03 09:35:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1653832.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!