Buttercola: Zenefits: Infix expression



Buttercola: Zenefits: Infix expression

Understand the problem: The problem looks complicated to implement, actually could be memorized in a template way.  If the token is a number, then push it to the num stack.  If the token is a operator, there are 5 cases to consider: 1. If the opStack is empty   -- push into opStack      -- If the top is '(', then push the token into opStack.      -- Else (which means has higher or equal precedence), consume the stack by doing one computation.  3. If the token is * or /      -- If the top is '(', push the token into opStack      -- Else if top has lower precedence ( + or -), push the token into opStack.      -- Else if the top has equal precedence (* or /), consume the stack by doing one computation.  4. If the token is (     -- Push into opStack    -- Doing computations until we see the '(' in the opStack.  Code (Java): public class Solution { public int calculate(String s) { if (s == null || s.length() == 0) { return 0; } // parse the string String delim = "[ ]+"; s = s.

Read full article from Buttercola: Zenefits: Infix expression


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts