/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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);
}