/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @param tokensLen int tokens数组长度
* @return int整型
*/
double add(char *arr){//算出单个字符串的值
double sum=0.0;
while(*arr!='\0'){
sum*=10;
sum+=*arr-48;
arr++;
}
return sum;
}
#include <stdio.h>
int evalRPN(char** tokens, int tokensLen ) {
// write code here
int sum,arr[100000],*top=NULL;
int a,c;int i=1;
char b;
if(*(tokens[0])>='0'&&*(tokens[0])<='9')
arr[0]=add(tokens[0]);
else{
arr[0]=add(tokens[0]+1)*(-1);
}
top=arr;
while(i<tokensLen){
if(strlen(tokens[i])==1&&!(*(tokens[i])>='0'&&*(tokens[i])<='9')){//入栈
a=*(top);
--top;
c=*(top);
switch(*(tokens[i])){
case '+':sum=c+a;break;
case '-':sum=c-a;break;
case '*':sum=c*a;break;
case '/':sum=c/a;break;
}
*top=sum;
}else{
if(*(tokens[i])>='0'&&*(tokens[i])<='9')
*(++top)=add(tokens[i]);
else{
*(++top)=add(tokens[i]+1)*(-1);
}
}
i++;
}
return (int)(*top);
}