欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > leetcode刷题日记——逆波兰表达式求值

leetcode刷题日记——逆波兰表达式求值

2025/4/26 21:42:13 来源:https://blog.csdn.net/qq_46582619/article/details/147521992  浏览:    关键词:leetcode刷题日记——逆波兰表达式求值

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 借助栈的特性,遇见数字就将这个数压入栈内,遇见符号,就从栈中弹出两个数,进行相应的运算,然后将结果压入栈中
  • 运行如下
    在这里插入图片描述
int evalRPN(char** tokens, int tokensSize) {int* stack = (int*)malloc(sizeof(int) * tokensSize);int top = -1;for (int i = 0; i < tokensSize; i++) {if (strcmp(tokens[i], "*") == 0) {int a = stack[top--];int b = stack[top--];stack[++top] = b * a;} else if (strcmp(tokens[i], "+") == 0) {int a = stack[top--];int b = stack[top--];stack[++top] = b + a;} else if (strcmp(tokens[i], "-") == 0) {int a = stack[top--];int b = stack[top--];stack[++top] = b - a; } else if (strcmp(tokens[i], "/") == 0) {int a = stack[top--];int b = stack[top--];stack[++top] = b / a; } else {int num = 0;int sign = 1;int j = 0;if (tokens[i][0] == '-') {sign = -1;j = 1;}for (; tokens[i][j] != '\0'; j++) {num = num * 10 + (tokens[i][j] - '0');}stack[++top] = num * sign;}}int result = stack[top];free(stack);return result;
}

[ 官方题解 ]:

  • 方法一:栈,思路基本同上
  • 方法二:数组模拟栈,即,上述操作

版权声明:

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

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

热搜词