Interview 150

Basic Calculator II

Problem
LC 227
File
interview150_LC227BasicCalculatorII.java
Path
pkg5leetcode/interview150/interview150_LC227BasicCalculatorII.java
Package
pkg5leetcode.interview150
Command
java pkg5leetcode/interview150/interview150_LC227BasicCalculatorII.java

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/interview150/interview150_LC227BasicCalculatorII.java
1package pkg5leetcode.interview150;2 3/** LC 227 Basic Calculator II */4public class interview150_LC227BasicCalculatorII {5  static int calculate(String s) {6    int n = s.length(), num = 0, sign = 1, stack = 0, i = 0;7    while (i < n) {8      char c = s.charAt(i);9      if (Character.isDigit(c)) { num = num * 10 + (c - '0'); i++; continue; }10      if (c == '+') { stack += sign * num; num = 0; sign = 1; i++; }11      else if (c == '-') { stack += sign * num; num = 0; sign = -1; i++; }12      else if (c == '*') {13        i++; int b = 0; while (i < n && Character.isDigit(s.charAt(i))) b = b * 10 + (s.charAt(i++) - '0');14        num = sign * num * b; sign = 1;15      } else if (c == '/') {16        i++; int b = 0; while (i < n && Character.isDigit(s.charAt(i))) b = b * 10 + (s.charAt(i++) - '0');17        num = sign * num / b; sign = 1;18      } else i++;19    }20    return stack + sign * num;21  }22 23  public static void main(String[] args) {24    System.out.println(calculate("3+2*2"));25    System.out.println(calculate(" 3/2 "));26  }27}