当前位置: 首页> 财经> 股票 > 在线微信小程序_广东深圳区号_超级外链吧_武汉网站提升排名

在线微信小程序_广东深圳区号_超级外链吧_武汉网站提升排名

时间:2025/7/10 2:25:43来源:https://blog.csdn.net/m0_56332819/article/details/143414282 浏览次数:0次
在线微信小程序_广东深圳区号_超级外链吧_武汉网站提升排名

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

示例 1:

输入:s = "3+2*2"
输出:7

示例 2:

输入:s = " 3/2 "
输出:1

示例 3:

输入:s = " 3+5 / 2 "
输出:5

代码:

int calculate(char *s) {int len = strlen(s);// 获取输入字符串的长度。int stack[len];// 定义一个整数数组 stack,用于模拟栈,存储中间结果。int top = 0;// 定义一个变量 top,用于表示栈顶位置,初始值为 0,表示栈为空。long ans = 0;// 定义一个长整型变量 ans,用于存储最终的计算结果。long num = 0;// 定义一个长整型变量 num,用于临时存储数字。char sign = '+';// 定义一个字符变量 sign,用于记录上一个操作符,初始值为 '+'。for (int i = 0; i <= len; i++) {// 遍历输入字符串。if (isdigit(s[i])) {num = num * 10 + (s[i] - '0');// 如果当前字符是数字,将其转换为数字并累加到 num 中。} else {if (s[i] == ' ') {continue;}// 如果当前字符是空格,跳过。if (sign == '+') {stack[top++] = num;} else if (sign == '-') {stack[top++] = -num;} else if (sign == '*') {stack[top - 1] *= num;} else if (sign == '/') {stack[top - 1] /= num;}// 根据上一个操作符 sign 的值,对 num 进行相应的操作,并将结果存入栈中。sign = s[i];// 更新 sign 为当前操作符。num = 0;// 重置 num 为 0,准备下一个数字的读取。}}while (top > 0) {ans += stack[--top];}// 遍历栈,将栈中的所有元素相加,得到最终结果。return ans;// 返回最终的计算结果。
}

关键字:在线微信小程序_广东深圳区号_超级外链吧_武汉网站提升排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: