# Leetcode 227. Basic Calculator II

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" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5```

Note: Do not use the `eval` built-in library function.

```class Solution {
public:
int calculate(string s) {
stack<int> ss;
int now = 0, flag = 1, temp;
s += "#";
bool flagd = false, flagm = false;
for(int i = 0; i < s.size(); i ++)
{
if(s[i] == ' ') continue;
if(s[i] >= '0' && s[i] <= '9') now = now * 10 + s[i] - '0';
else if(flagm)
{
i--;
flagm = false;
now *= temp;
}
else if(flagd)
{
i--;
flagd = false;
now = temp / now;
}
else if(s[i] == '#') continue;
else if(s[i] == '+')
{
ss.push(flag * now);
flag = 1;
now = 0;
}
else if(s[i] == '-')
{
ss.push(flag * now);
flag = -1;
now = 0;
}
else
{
temp = now;
now = 0;
if(s[i] == '*') flagm = true;
else flagd = true;
}
}
now *= flag;
while(!ss.empty())
{
now += ss.top();
ss.pop();
}
return now;
}
};```

0 条评论

• ### Leetcode 229. Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/...

• ### Leetcode 224. Basic Calculator

Implement a basic calculator to evaluate a simple expression string. The expre...

• ### Leetcode 65 Valid Number DFA有限状态机

Validate if a given string is numeric. Some examples: "0" => true " 0.1 " =>...

• ### 如何使页面交互更流畅

本篇是基于 FDCon2019 上《让你的网页更丝滑by刘博文》的复盘文。该课题也是博主感兴趣的领域, 后续会结合 React 的 Schedule 与该文进行...

• ### 【优化】514- 如何使页面交互更流畅

本篇是基于 FDCon2019 上《让你的网页更丝滑by刘博文》的复盘文。该课题也是博主感兴趣的领域, 后续会结合 React 的 Schedule 与该文进行...

• ### if判断与比较操作符gt、lt、eq等的使用

PS：使用if判断时,需要在判断结束处填入"fi",表示if语句块的结束 例如: if [ \$ACTION = "add"] then .....

• ### 聊聊Elasticsearch的NodesSniffer

elasticsearch-7.0.1/client/sniffer/src/main/java/org/elasticsearch/client/sniff/...

• ### 聊聊Elasticsearch的NodesSniffer

elasticsearch-7.0.1/client/sniffer/src/main/java/org/elasticsearch/client/sniff/...

• ### Leetcode【227、468、848、1081】

这道题是实现一个基本计算器，即给一个只包括 +、-、*、/、数字和空格的字符串，计算结果。