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
There is no in-browser runner. This is the file from the curriculum, unchanged.
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}