leetcode 224
简介
简易计算器
一时半会儿没写出来,看了官方题解.
感觉思路是遇到 ( 前一个操作符号,入栈,遇到 ) 栈中弹出操作符号
遇到 + 符号为栈顶符号 遇到 - 符号为 栈顶符号的反符号
官方使用栈来保存操作默认初始的操作为 + ,ops为1, sign为1
对 3+2-(4-5) 进行思路遍历
如果遇到 3 进入
else {
long num = 0;
while(i < s.size() && (s[i] >= '0' && s[i] <= '9')) {
num = num * 10 + s[i] - '0';
i++;
}
rlt += num * sign;
}
得到 rlt = 3
遇到 '+'
else if(s[i] == '+') {
sign = ops.top();
i++;
sign = 1
遇到 2
rlt = 5
遇到 '-'
else if(s[i] == '-') {
sign = -ops.top();
i++;
sign = -1;
遇到 (
ops.push(sign);
i++;
ops top = -1;
遇到 4
rlt = 5 - 4 = 1;
遇到 -
sign = 1
遇到5
rlt + 5 = 6
遇到 )
直接弹出符号
code
class Solution {
public:
int calculate(string s) {
stack<int> ops;
ops.push(1);
int sign = 1;
int ret = 0;
int n = s.length();
int i = 0;
while (i < n) {
if (s[i] == ' ') {
i++;
} else if (s[i] == '+') {
sign = ops.top();
i++;
} else if (s[i] == '-') {
sign = -ops.top();
i++;
} else if (s[i] == '(') {
ops.push(sign);
i++;
} else if (s[i] == ')') {
ops.pop();
i++;
} else {
long num = 0;
while (i < n && s[i] >= '0' && s[i] <= '9') {
num = num * 10 + s[i] - '0';
i++;
}
ret += sign * num;
}
}
return ret;
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/basic-calculator/solution/ji-ben-ji-suan-qi-by-leetcode-solution-jvir/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
leetcode 224的更多相关文章
- Leetcode 224/227/772 计算器
题目描述 Leetcode 224 Leetcode 224: 这里想让我们实现一个基础的计算器,来计算给定的字符串. 给定的字符串中包含 ( ) + - 和非负整数和空格. # Example 1: ...
- leetcode 224. Basic Calculator 、227. Basic Calculator II
这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...
- [LeetCode] 224. Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- Java实现 LeetCode 224 基本计算器
224. 基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 ...
- Java for LeetCode 224 Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- (medium)LeetCode 224.Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- [leetcode]224. Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- Leetcode 224.基本计算器
基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 + 1 ...
- [LeetCode] 227. Basic Calculator II 基本计算器 II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- [LeetCode] 282. Expression Add Operators 表达式增加操作符
Given a string that contains only digits 0-9 and a target value, return all possibilities to add bin ...
随机推荐
- FastAPI与SQLAlchemy同步数据库集成
title: FastAPI与SQLAlchemy同步数据库集成 date: 2025/04/15 01:27:37 updated: 2025/04/15 01:27:37 author: cmdr ...
- fiddler模拟弱网配置
1.延长加载时间 Rules-cumtomize rules,打开fiddler scripteditor 搜索simulatemodem-更改时间为需要延长加载的时间(单位为毫秒)-保存退出 2.打 ...
- 定时任务稳定性解决方案-healthchecks监控系统
背景 目前crontab出现问题后无感知,发现问题不及时,几乎是靠业务部门或用户反馈的方式,研发部门再排查的方式,处理问题.发现问题相对滞后,由此可见需要进一步优化crontab的稳定性,降故障通知前 ...
- thinkphp mysql 使用IN 条件
今天使用thinkphp whrere in条件查询 数据库是 ,我需要搜索入参 110000 一个字段 ,但是thinkphp 为了效率直接把 in条件转成 = 解决方法 FIND_IN ...
- 改进NeteaseCloudMusicGtk4:添加移除歌曲按钮
之前已经发了一篇博客简述了如何阅读这个项目,尽管这个项目已经开源很久了,但我找了很久都没有找到怎么从播放列表移除歌曲,那就自己动手实现,再提个 PR 吧. 运行起来应用后通过 Inspector(Ct ...
- 【记录】Prompt模板|作为甲方怎么清晰专业地描述自己的需求(又名“乙方,给你的甲方扔个GPT解放自己吧”)
这篇Prompt摘抄并修改自朋友送给我的书的第49页5.2.3让ChatGPT构建提示,质量挺不错,支持一下她的博客:[好书推荐2]AI提示工程实战:从零开始利用提示工程学习应用大语言模型. 书长这样 ...
- IDEA设置之“代码提示不区分大小写”
作用 代码提示不区分大小写 案例1 案例2
- Mysql 实现 rank 和 != 问题
我一直相信, 人是能预测未来的, 这应该是前几年看弗洛伊德, 荣格的一些心理学书, 给我的一些感受, 有个片段是关于做梦的, 一个人梦见子弹穿过他自己的头颅, 结果不久, 他就去世了. 这个片段当时给 ...
- MarchingCube算法之C#实现三维❤
首先致谢该博文,讲解的非常详细:https://blog.csdn.net/u013339596/article/details/19167907?spm=1001.2101.3001.6650.7& ...
- JDK网站最终的拼图
"JDK源码剖析网"目前只上线了一小部分的内容(而且还未更新完成),Javac编译器,HotSpot基础.垃圾收集器以及HotSpot运行时将在今年10月份之前做为付费内容努力更新 ...