欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode ——150.逆波兰表达式

程序员文章站 2022-03-06 08:25:59
...

Leetcode ——150.逆波兰表达式

int charToInt(char* str){
    int i=str[0]=='-'?1:0,num=0;
    while(str[i])
        num=num*10+str[i++]-'0';
    return str[0]=='-'?-num:num;
}

int evalRPN(char ** tokens, int tokensSize){
    int i=1,stack_index=0;
    int stack[(tokensSize+1)/2];
    stack[0]=charToInt(tokens[0]);
    while(i<tokensSize)
        switch(tokens[i++][0]){
            case '+':
                stack[--stack_index]=stack[stack_index-1]+stack[stack_index];
                break;    
            case '*':
                stack[--stack_index]=stack[stack_index-1]*stack[stack_index];
                break;
            case '/':
                stack[--stack_index]=stack[stack_index-1]/stack[stack_index];
                break;
            case '-':
                if(tokens[i-1][1]==0){
                    stack[--stack_index]=stack[stack_index-1]-stack[stack_index];
                    break;
                }
           
            default:
                stack[++stack_index]=charToInt(tokens[i-1]);
            }
    return stack[0];
}

Leetcode ——150.逆波兰表达式

相关标签: 力扣题目