127. Word Ladder
Word LadderWord Ladder
Solution
public class Solution {
public int ladderLength(String beginWord, String endWord, Set<String> wordList) {
Map<String, Integer> map = new HashMap<>();
Queue<String> queue = new LinkedList<String>();
queue.add(beginWord);
map.put(beginWord, 1);
while (!queue.isEmpty()) {
String currentString = queue.poll();
if (currentString.equals(endWord)) {
break;
}
for (int i = 0; i < currentString.length(); i++) {
char[] charArray = currentString.toCharArray();
for (char j = 'a'; j <= 'z'; j++) {
if (j != currentString.charAt(i)) {
charArray[i] = j;
String newString = String.valueOf(charArray);
if (wordList.contains(newString) && !map.containsKey(newString)) {
map.put(newString, map.get(currentString) + 1);
queue.add(newString);
}
}
}
charArray[i] = currentString.charAt(i);
}
}
return map.containsKey(endWord) ? map.get(endWord) : 0;
}
}Last updated