package Strings;import java.util.List;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.HashSet;/***Problem Statement:**A transformation sequence from word beginWord to word endWord using a dictionary wordList is a sequence of words beginWord -> s1 -> s2 -> ... -> sk such that:Every adjacent pair of words differs by a single letter.Every si for 1 <= i <= k is in wordList. Note that beginWord does not need to be in wordList.sk == endWordGiven two words, beginWord and endWord, and a dictionary wordList, return the number of words in the shortest transformation sequence from beginWord to endWord, or 0 if no such sequence exists.**Example 1:**Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]Output: 5Explanation: One shortest transformation sequence is "hit" -> "hot" -> "dot" -> "dog" -> cog", which is 5 words long.**Example 2:**Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]Output: 0Explanation: The endWord "cog" is not in wordList, therefore there is no valid transformation sequence.**Constraints:**1 <= beginWord.length <= 10endWord.length == beginWord.length1 <= wordList.length <= 5000wordList[i].length == beginWord.lengthbeginWord, endWord, and wordList[i] consist of lowercase English letters.beginWord != endWordAll 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<String> wordList = Arrays.asList(words);System.out.println("Ladder Length: " + ladderLength(beginWord,endWord,wordList));}/*** This function finds the ladderLength* @param beginWord: Starting word of the ladder* @param endWord: Ending word of the ladder* @param wordList: This list contains the words which needs to be included in ladder.* @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<String> wordList) {HashSet<String> set = new HashSet();for(String word : wordList){set.add(word);}if(!set.contains(endWord)) return 0;Queue<String> queue = new LinkedList();queue.offer(beginWord);int level = 1;while(!queue.isEmpty()){int size = queue.size();for(int i = 0; i < size; i++){String curr = queue.poll();char[] words_chars = curr.toCharArray();for(int j = 0; j < words_chars.length; j++){char original_chars = words_chars[j];for(char c = 'a'; c <= 'z'; c++){if(words_chars[j] == c) continue;words_chars[j] = c;String new_word = String.valueOf(words_chars);if(new_word.equals(endWord)) return level+1;if(set.contains(new_word)){set.remove(new_word);queue.offer(new_word);}}words_chars[j] = original_chars;}}level++;}return 0;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。