From d94f341a13c4cc12fa4565195edd4fcd85f07959 Mon Sep 17 00:00:00 2001 From: ashmichheda Date: Sun, 30 Oct 2022 18:28:08 -0700 Subject: [PATCH 1/2] add fix for 2325 --- .../java/com/fishercoder/solutions/_2325.java | 32 +++++++++++++++++++ src/test/java/com/fishercoder/_2325Test.java | 26 +++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/main/java/com/fishercoder/solutions/_2325.java create mode 100644 src/test/java/com/fishercoder/_2325Test.java diff --git a/src/main/java/com/fishercoder/solutions/_2325.java b/src/main/java/com/fishercoder/solutions/_2325.java new file mode 100644 index 0000000000..c671afa832 --- /dev/null +++ b/src/main/java/com/fishercoder/solutions/_2325.java @@ -0,0 +1,32 @@ +package com.fishercoder.solutions; + +import java.util.HashMap; +import java.util.Map; + +public class _2325 { + public static class Solution1 { + public String decodeMessage(String key, String message) { + + // put first occurrence of each char of key in hashmap, where k = char in key, v = incremental a - z alphabets + + Map bucket = new HashMap<>(); + char ch = 'a'; + char keyArr[] = key.toCharArray(); + StringBuilder result = new StringBuilder(); + + for(int i = 0; i < keyArr.length; i++) { + if (keyArr[i] != ' ' && !bucket.containsKey(keyArr[i])) { + bucket.put(keyArr[i], ch++); + } + } + + // decode the message using the bucket + char msgArr[] = message.toCharArray(); + for(int i = 0; i < msgArr.length; i++) { + if(msgArr[i] == ' ') result.append(" "); + else result.append(bucket.get(msgArr[i])); + } + return result.toString(); + } + } +} diff --git a/src/test/java/com/fishercoder/_2325Test.java b/src/test/java/com/fishercoder/_2325Test.java new file mode 100644 index 0000000000..063c92a2ef --- /dev/null +++ b/src/test/java/com/fishercoder/_2325Test.java @@ -0,0 +1,26 @@ +package com.fishercoder; + +import com.fishercoder.solutions._2325; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class _2325Test { + private static _2325.Solution1 solution1; + private String key; + private String message; + + @BeforeClass + public static void setup() { + solution1 = new _2325.Solution1(); + } + + @Test + public void test1() { + key = "the quick brown fox jumps over the lazy dog"; + message = "vkbs bs t suepuv"; + String actual = solution1.decodeMessage(key, message); + String expected = "this is a secret"; + Assert.assertEquals(actual, expected); + } +} From dd2a1e78104e65b849710e08d4eea8e4cfe6b4ed Mon Sep 17 00:00:00 2001 From: ashmichheda Date: Sun, 30 Oct 2022 18:35:58 -0700 Subject: [PATCH 2/2] add fix for 2325 --- .../java/com/fishercoder/solutions/_2325.java | 25 +++++++++++++++++++ src/test/java/com/fishercoder/_2325Test.java | 6 ++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fishercoder/solutions/_2325.java b/src/main/java/com/fishercoder/solutions/_2325.java index f7ff4277b6..c739a7cde1 100644 --- a/src/main/java/com/fishercoder/solutions/_2325.java +++ b/src/main/java/com/fishercoder/solutions/_2325.java @@ -31,4 +31,29 @@ public String decodeMessage(String key, String message) { return sb.toString(); } } + public static class Solution2 { + + public String decodeMessage(String key, String message) { + // put first occurrence of each char of key in hashmap, where k = char in key, v = incremental a - z alphabets + + Map bucket = new HashMap<>(); + char ch = 'a'; + char keyArr[] = key.toCharArray(); + StringBuilder result = new StringBuilder(); + + for(int i = 0; i < keyArr.length; i++) { + if (keyArr[i] != ' ' && !bucket.containsKey(keyArr[i])) { + bucket.put(keyArr[i], ch++); + } + } + + // decode the message using the bucket + char msgArr[] = message.toCharArray(); + for(int i = 0; i < msgArr.length; i++) { + if(msgArr[i] == ' ') result.append(" "); + else result.append(bucket.get(msgArr[i])); + } + return result.toString(); + } + } } diff --git a/src/test/java/com/fishercoder/_2325Test.java b/src/test/java/com/fishercoder/_2325Test.java index 063c92a2ef..2e93d5b305 100644 --- a/src/test/java/com/fishercoder/_2325Test.java +++ b/src/test/java/com/fishercoder/_2325Test.java @@ -6,20 +6,20 @@ import org.junit.Test; public class _2325Test { - private static _2325.Solution1 solution1; + private static _2325.Solution2 solution2; private String key; private String message; @BeforeClass public static void setup() { - solution1 = new _2325.Solution1(); + solution2 = new _2325.Solution2(); } @Test public void test1() { key = "the quick brown fox jumps over the lazy dog"; message = "vkbs bs t suepuv"; - String actual = solution1.decodeMessage(key, message); + String actual = solution2.decodeMessage(key, message); String expected = "this is a secret"; Assert.assertEquals(actual, expected); }