From db20fe9aea06448166bd5b92b988814e5e98c383 Mon Sep 17 00:00:00 2001 From: Ben Makusha Date: Mon, 14 Apr 2025 22:43:49 -0400 Subject: [PATCH 1/2] Evaluate query String --- .../hellointerview/EvaluateQuery.java | 43 +++++++++++++++++++ .../hellointerview/EvaluateQueryTest.java | 4 ++ 2 files changed, 47 insertions(+) create mode 100644 src/main/java/practiceinterviews/hellointerview/EvaluateQuery.java create mode 100644 src/test/java/practiceinterviews/hellointerview/EvaluateQueryTest.java diff --git a/src/main/java/practiceinterviews/hellointerview/EvaluateQuery.java b/src/main/java/practiceinterviews/hellointerview/EvaluateQuery.java new file mode 100644 index 0000000..089fa30 --- /dev/null +++ b/src/main/java/practiceinterviews/hellointerview/EvaluateQuery.java @@ -0,0 +1,43 @@ +package practiceinterviews.hellointerview; + +public class EvaluteQuery { + + public static boolean evaluateQueryString(String query, int x) { + String exp = query.replace("X", String.valueOf(x)); + + exp = exp.trim(); + if (exp.startsWith("(") && exp.endsWith(")")) + exp = exp.substring(1, exp.length() - 1); + + return evaluate(exp); + } + + private static boolean evaluate(String exp) { + exp = exp.trim(); + + if (exp.startsWith("(")) { + int openCnt = 0; + for (int i = 0; i < exp.length(); i++) { + if (exp.charAt(i) == '(') openCnt++; + if (exp.charAt(i) == ')') openCnt--; + if (openCnt == 0) { + String inner = exp.substring(1, i); + boolean innerResult = evaluate(inner); + String remaining = exp.substring(i + 1).trim(); + if (remaining.isEmpty()) + return innerResult; + return evaluate(innerResult + " " + remaining); + } + } + } + + if (exp.contains("&&")) { + String[] parts = exp.split("&&", 2); + return evaluate(parts[0]) && evaluate(parts[1]); + } + if (exp.contains("||")) { + String[] parts = exp.split("\\|\\|", 2); + return evaluate(parts[0]) && evaluate(parts[1]); + } + } +} diff --git a/src/test/java/practiceinterviews/hellointerview/EvaluateQueryTest.java b/src/test/java/practiceinterviews/hellointerview/EvaluateQueryTest.java new file mode 100644 index 0000000..b3477fc --- /dev/null +++ b/src/test/java/practiceinterviews/hellointerview/EvaluateQueryTest.java @@ -0,0 +1,4 @@ +import static org.junit.jupiter.api.Assertions.*; +class EvaluateQueryTest { + +} \ No newline at end of file From ada98cefd11bc3b7fa45e419d5ee5d6f084a3d46 Mon Sep 17 00:00:00 2001 From: Ben Makusha Date: Thu, 1 May 2025 16:23:13 -0400 Subject: [PATCH 2/2] Hello Interview Question --- .idea/gradle.xml | 2 +- .idea/misc.xml | 2 +- .idea/workspace.xml | 59 ++++++++++--------- .../hellointerview/EvaluateQuery.java | 34 ++++++++++- .../hellointerview/EvaluateQueryTest.java | 32 +++++++++- 5 files changed, 95 insertions(+), 34 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2a65317..7d3b3e8 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,7 +5,7 @@