Skip to content

Commit

Permalink
dijkstra algorithm done
Browse files Browse the repository at this point in the history
  • Loading branch information
jaypatel208 committed Dec 11, 2023
1 parent d95608d commit 840dda2
Showing 1 changed file with 20 additions and 26 deletions.
46 changes: 20 additions & 26 deletions src/Evaluate142.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,35 @@
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

import java.util.Stack;

//Dijkstra’s Two-Stack Algorithm for Expression Evaluation
public class Evaluate142 {
public static void main(String[] args) {
Stack<String> ops = new Stack<>();
Stack<Double> vals = new Stack<>();
while (!StdIn.isEmpty()) {
String s = StdIn.readString();
if (s.equals("(")) {

} else if (s.equals("+")) {
ops.push(s);
} else if (s.equals("-")) {
ops.push(s);
} else if (s.equals("*")) {
ops.push(s);
} else if (s.equals("/")) {
ops.push(s);
} else if (s.equals("sqrt")) {
ops.push(s);
} else if (s.equals(")")) {
String op = ops.pop();
double v = vals.pop();
if (op.equals("+")) {
v = vals.pop() + v;
} else if (op.equals("-")) {
v = vals.pop() - v;
} else if (op.equals("*")) {
v = vals.pop() * v;
} else if (op.equals("/")) {
v = vals.pop() / v;
} else if (op.equals("sqrt")) {
v = Math.sqrt(v);
switch (s) {
case "(" -> {
}
case "+", "-", "*", "/", "sqrt" -> ops.push(s);
case ")" -> {
String op = ops.pop();
double v = vals.pop();
v = switch (op) {
case "+" -> vals.pop() + v;
case "-" -> vals.pop() - v;
case "*" -> vals.pop() * v;
case "/" -> vals.pop() / v;
case "sqrt" -> Math.sqrt(v);
default -> v;
};
vals.push(v);
}
vals.push(v);
default -> vals.push(Double.parseDouble(s));
}
}
StdOut.println(vals.pop());
}
}

0 comments on commit 840dda2

Please sign in to comment.