227. Basic Calculator II

227. Basic Calculator II

  
class Solution {
    public int calculate(String s) {
      // remove all empty space 
      s = s.replaceAll(" ", "");
      int sum = s.charAt(0) - '0';
      int prev = s.charAt(0) - '0';
      int index = 0;
      char op = '+';
      

      // more than one digits 
      while(index + 1 < s.length() && Character.isDigit(s.charAt(index+1))){
        sum = sum * 10 + (s.charAt(index + 1) - '0');
        prev = prev * 10 + (s.charAt(index + 1) - '0');
        index++;
      }

    
      
      for(int i = index + 1; i < s.length(); i++){
        char c = s.charAt(i);
        if(!Character.isDigit(c)){
          op = c;
        }else{
          int current = c - '0';
          while(i + 1 < s.length() && Character.isDigit(s.charAt(i + 1))){
            current = current * 10 + (s.charAt(i + 1) - '0'); // 要减 0, 不减0, 就是 一个 char。 
            i++;
          }
          if(op == '+'){
            sum = sum + current;
            prev = current;
          }
          if(op == '-'){
            sum = sum - current;
            prev = -current;
          }
          if(op == '*'){
            sum = sum - prev + prev * current;
            prev = prev * current;
          }
          if(op == '/'){
            sum = sum - prev + prev / current;
            prev = prev / current;
          }
        }
      }
      return sum;
    }
}

猜你喜欢

转载自www.cnblogs.com/tobeabetterpig/p/9455021.html
今日推荐