/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串一维数组 * @param tokensLen int tokens数组长度 * @return int整型 */ int count(int a, int b, char c) { if (c == '+') { return a + b; } else if (c == '-') { return a - b; } else if (c == '*') { return a * b; } else if (c == '/') { return a / b; } return 0; } int evalRPN(char** tokens, int tokensLen) { // write code here int i = 0; int* start = (int*)malloc(sizeof(int) * tokensLen); int top = 0; int sum = 0; for (i = 0; i < tokensLen; i++) { if (strcmp(tokens[i], "+") == 0) { sum = count(start[top - 2], start[top - 1], '+'); start[top - 2] = sum; top--; } else if (strcmp(tokens[i], "-") == 0) { sum = count(start[top - 2], start[top - 1], '-'); start[top - 2] = sum; top--; } else if (strcmp(tokens[i], "*") == 0) { sum = count(start[top - 2], start[top - 1], '*'); start[top - 2] = sum; top--; } else if (strcmp(tokens[i], "/") == 0) { sum = count(start[top - 2], start[top - 1], '/'); start[top - 2] = sum; top--; } else { sum = atoi(tokens[i]); start[top] = sum; top++; } } return start[0]; }