Categorías
Algorithms

LeetCode – Calculadora básica II (Java)

Implemente una calculadora básica para evaluar una cadena de expresión simple.

La cadena de expresión contiene solo números enteros no negativos, operadores +, -, *, / y espacios vacíos. La división de enteros debe truncar hacia cero.

Puede suponer que la expresión dada siempre es válida.

Algunos ejemplos:
«3 + 2 * 2» = 7

Solución Java

public int calculate(String s) {
    int md=-1; // 0 is m, 1 is d
    int sign=1; // 1 is +, -1 is -
    int prev=0;
    int result=0;
 
    for(int i=0; i<s.length(); i++){
        char c = s.charAt(i);
        if(Character.isDigit(c)){
            int num = c-'0';
            while(++i<s.length() && Character.isDigit(s.charAt(i))){
                num = num*10+s.charAt(i)-'0';
            }
            i--; // back to last digit of number
 
            if(md==0){
                prev = prev * num;
                md=-1;
            }else if(md==1){
                prev = prev / num;
                md=-1;
            }else{
                prev = num;
            }
        }else if(c=='/'){
            md=1;
        }else if(c=='*'){
            md=0;
        }else if(c=='+'){
            result = result + sign*prev;
            sign=1;
        }else if(c=='-'){
            result = result + sign*prev;
            sign=-1;
        }
    }
 
    result = result + sign*prev;
    return result;
}
  Leetcode - Ciclo de lista enlazada

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *