【C++算法】67.栈_基本计算器 II
文章目录
- 题目链接:
- 题目描述:
- 解法
- C++ 算法代码:
题目链接:
227. 基本计算器 II
题目描述:
解法
表达式求值,一般是用栈来模拟计算过程。
C++ 算法代码:
class Solution
{
public:int calculate(string s) {// 简单计算器算法// 基本思路:使用栈处理表达式,遵循运算符优先级规则vector<int> st; // 用数组来模拟栈结构,存储操作数和计算结果int i = 0, n = s.size(); // i是当前处理的位置,n是字符串长度char op = '+'; // 初始运算符设为加号,用于处理第一个数while(i < n){if(s[i] == ' ') i++; // 跳过空格else if(s[i] >= '0' && s[i] <= '9') // 遇到数字{// 提取完整的多位数字int tmp = 0;while(i < n && s[i] >= '0' && s[i] <= '9') tmp = tmp * 10 + (s[i++] - '0');// 根据之前的运算符进行相应操作if(op == '+') st.push_back(tmp); // 加法:将数字入栈else if(op == '-') st.push_back(-tmp); // 减法:将负数入栈else if(op == '*') st.back() *= tmp; // 乘法:将栈顶元素与当前数相乘else st.back() /= tmp; // 除法:将栈顶元素除以当前数}else // 遇到运算符{op = s[i]; // 记录当前运算符,用于处理下一个数i++;}}// 计算最终结果:将栈中所有数相加int ret = 0;for(auto x : st) ret += x;return ret;}
};