diff --git a/src/main/java/com/fishercoder/solutions/_2325.java b/src/main/java/com/fishercoder/solutions/_2325.java index 5a892f0246..c739a7cde1 100644 --- a/src/main/java/com/fishercoder/solutions/_2325.java +++ b/src/main/java/com/fishercoder/solutions/_2325.java @@ -31,5 +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 new file mode 100644 index 0000000000..2e93d5b305 --- /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.Solution2 solution2; + private String key; + private String message; + + @BeforeClass + public static void setup() { + 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 = solution2.decodeMessage(key, message); + String expected = "this is a secret"; + Assert.assertEquals(actual, expected); + } +}