From a0d03e814a34e02cb469de4efdd38459e56335ba Mon Sep 17 00:00:00 2001 From: Taranjeet Singh Kalsi Date: Wed, 26 Oct 2022 18:44:03 +0530 Subject: [PATCH] Update WordLadderTest.java & WordLadder.java (#3674) --- .../com/thealgorithms/strings/WordLadder.java | 21 ++----------- .../thealgorithms/strings/WordLadderTest.java | 31 ++++++++++++++++--- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/thealgorithms/strings/WordLadder.java b/src/main/java/com/thealgorithms/strings/WordLadder.java index c8c5fd7345c0..a08d3d586fdf 100644 --- a/src/main/java/com/thealgorithms/strings/WordLadder.java +++ b/src/main/java/com/thealgorithms/strings/WordLadder.java @@ -34,21 +34,8 @@ beginWord != endWord All the words in wordList are unique. */ -class WordLadder { - - /** - * Driver Code - */ - public static void main(String[] args) { - String beginWord = "hit"; - String endWord = "cog"; - String words[] = { "hot", "dot", "dog", "lot", "log", "cog" }; - List wordList = Arrays.asList(words); - System.out.println( - "Ladder Length: " + ladderLength(beginWord, endWord, wordList) - ); - } +class WordLadder { /** * This function finds the ladderLength @@ -60,11 +47,7 @@ public static void main(String[] args) { * @return ladderLength: This function will return the ladderLength(level) * if the endword is there. Otherwise, will return the length as 0. */ - public static int ladderLength( - String beginWord, - String endWord, - List wordList - ) { + public static int ladderLength(String beginWord, String endWord, List wordList) { HashSet set = new HashSet(); for (String word : wordList) { set.add(word); diff --git a/src/test/java/com/thealgorithms/strings/WordLadderTest.java b/src/test/java/com/thealgorithms/strings/WordLadderTest.java index 4e1e1db63875..ad572a136302 100644 --- a/src/test/java/com/thealgorithms/strings/WordLadderTest.java +++ b/src/test/java/com/thealgorithms/strings/WordLadderTest.java @@ -1,7 +1,6 @@ package com.thealgorithms.strings; import static org.junit.jupiter.api.Assertions.*; - import org.junit.jupiter.api.Test; import java.util.*; @@ -9,9 +8,31 @@ public class WordLadderTest { @Test public void testWordLadder() { - String words1[] = { "hot", "dot", "dog", "lot", "log", "cog" }; - assertEquals(5, WordLadder.ladderLength("hit", "cog", Arrays.asList(words1))); - String words2[] = { "hot", "dot", "dog", "lot", "log" }; - assertEquals(0, WordLadder.ladderLength("hit", "cog", Arrays.asList(words2))); + + /** + * Test 1: + * Input: beginWord = "hit", endWord = "cog", wordList = + * ["hot","dot","dog","lot","log","cog"] + * Output: 5 + * Explanation: One shortest transformation sequence is + * "hit" -> "hot" -> "dot" -> "dog" -> cog" + * which is 5 words long. + */ + + List wordList1 = Arrays.asList("hot", "dot", "dog", "lot", "log", "cog"); + assertEquals(WordLadder.ladderLength("hit", "cog", wordList1), 5); + + /** + * Test 2: + * Input: beginWord = "hit", endWord = "cog", wordList = + * ["hot","dot","dog","lot","log"] + * Output: 0 + * Explanation: The endWord "cog" is not in wordList, + * therefore there is no valid transformation sequence. + */ + + List wordList2 = Arrays.asList("hot", "dot", "dog", "lot", "log"); + assertEquals(WordLadder.ladderLength("hit", "cog", wordList2), 0); + } }