SHARE
TWEET

expression

a guest Jan 23rd, 2020 68 in 3 hours
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. importjava.util.LinkedList;
  2. import java.util.StringTokenizer;
  3.  
  4.  
  5. public class EvaluateExpression {
  6.  
  7.     public static int evaluate(String expression) {
  8.         expression = "("+expression+")";
  9.         LinkedList<String> numList = new LinkedList <String>();
  10.         LinkedList<String> calculateList = new LinkedList <String>();
  11.        
  12.         StringTokenizer elements = new StringTokenizer (expression,"()+*",true);
  13.         long sum = 0;
  14.         while (elements.hasMoreTokens())‚ÄČ
  15.         {
  16.             String elem = elements.nextToken();
  17.             if (!elem.equals(")"))
  18.                 numList.push(elem);
  19.             else
  20.             {
  21.                 calculateList.clear();
  22.                 String second = "";
  23.                 while (!second.equals("("))
  24.                 {
  25.                     second = numList.pop();
  26.                     if(!second.equals("("))
  27.                     calculateList.push(second);
  28.                    
  29.                 }
  30.                 sum = 0;
  31.                 int s = calculateList.size();
  32.                 LinkedList <Long> sumOfAllParts = new LinkedList<Long>();
  33.                 for(int i = 0; i < s; i++)
  34.                 {
  35.                     String e = calculateList.get(i);
  36.                     if ( !e.equals("+") && !e.equals("*"))
  37.                     sumOfAllParts.add(Long.parseLong(e));
  38.                     else if (e.equals("*"))
  39.                     {
  40.                         String next = calculateList.get(++i);
  41.                         sumOfAllParts.add((sumOfAllParts.removeLast()*Long.parseLong(next))%1000007);
  42.                     }
  43.                 }
  44.                 for(int i = 0; i < sumOfAllParts.size(); i++)
  45.                 {
  46.                     sum+= sumOfAllParts.get(i);
  47.                 }
  48.                 sumOfAllParts.clear();
  49.                 String res = ""+sum;
  50.                 numList.push(res);
  51.             }
  52.            
  53.         }
  54.        
  55.         int result = (int) (Long.parseLong(numList.pop())%1000007);
  56.         return result;
  57.       }
  58. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top