【LeetCode】227. Basic Calculator
2024-08-27 07:17:52
Problem:
Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +
, -
, *
, /
operators and empty spaces . The integer division should truncate toward zero.
You may assume that the given expression is always valid.
Some examples:
"3+2*2" =
" 3/2 " =
" 3+5 / 2 " =
Note: Do not use the eval
built-in library function.
Solution:
字符串分成两种情况:数字num和运算符op,结果设为res,考虑到先乘除后加减的运算法则,设中间数mid优先计算乘除,再与res相加.
*> C++ version
class Solution {
public:
int calculate(string s)
{
int res=, num=, op='+', i=, mid=;
while(i<s.size())
{
num = ; ////每一轮要初始化num
//获取一整个数字存储在num中
if(isdigit(s[i]))
{
while(i<s.size()&&isdigit(s[i])) //连续数字字符作一个数
{
num = num*+(s[i]-'');
i++;
} //获取运算符存储在op中
if(op=='+'||op=='-')
{
res = res+mid;
mid = num*(op=='-'?-:);
}
else if(op=='/')
{
mid = mid/num;
}
else if(op=='*')
{
mid = mid*num;
}
}
else if(s[i]==' ') //不要漏了开头空格这种情况= - =它喵被摆了一道
i++;
else
{
op=s[i];
i++;
}
}
res = res+mid;
return res;
}
};
最新文章
- 修复 Visual Studio Error “No exports were found that match the constraint”
- 1.jenkins持续集成-jenkins安装
- Beta版本——第三次冲刺博客
- .NET跨平台:再见dnx,你好dotnet cli
- Find Minimum in Rotated Sorted Array leetcode java
- Material Design入门(三)
- 前端框架与UI搭配
- 关于MYSQL group by 分组按时间取最大值的实现方法!
- Github/Eclipse管理Maven项目
- sql 给数据库表 字段 添加注释
- Windows 7无线网卡启用wifi共享蓝屏!
- iframe 透明
- 了解JavaScript的执行上下文
- MyEclipse10.0安装jad反编译插件
- 工作总结:VS2010/MFC编程入门之十六(对话框:消息对话框)
- phantomjs初次认识
- 201521123102 《Java程序设计》第11周学习总结
- CentOS 7 安装Java 1.8
- vue全局变量的使用
- 百度TTS的来由