题解 | #逆波兰表达式求值#
逆波兰表达式求值
https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @param tokensLen int tokens数组长度
* @return int整型
*/
int evalRPN(char** tokens, int tokensLen ) {
// write code here
int stack[tokensLen];
int top = 0;
for (int i = 0; i < tokensLen; i++) {
char* num = tokens[i];
if ( strlen(num) > 1 || '0' <= num[0] && num[0] <= '9') {
stack[top++] = atoi(num);
} else {
switch (*num) {
case '+':
stack[top - 2] = stack[top - 2] + stack[top - 1];
top--;
break;
case '-':
stack[top - 2] = stack[top - 2] - stack[top - 1];
top--;
break;
case '*':
stack[top - 2] = stack[top - 2] * stack[top - 1];
top--;
break;
case '/':
stack[top - 2] = stack[top - 2] / stack[top - 1];
top--;
break;
}
}
}
return stack[top - 1];
}
查看11道真题和解析
阿里巴巴灵犀互娱公司福利 668人发布