127 Word Ladder – Medium
Problem:
Thoughts:
Solutions:
public class Solution {
public int ladderLength(String beginWord, String endWord, Set<String> wordDict) {
if (beginWord == null || endWord == null || beginWord.length() != endWord.length()) {
return 0;
}
HashSet<String> visited = new HashSet<String>();
Queue<String> q = new LinkedList<String>();
q.add(beginWord);
visited.add(beginWord);
int count = 0;
while (q.size() > 0) {
int n = q.size();
count ++;
for (int i = 0; i < n; i ++) {
String word = q.remove();
if (word.equals(endWord)) {
return count;
}
StringBuilder nwsb = new StringBuilder(word);
for (int j = 0; j < word.length(); j ++) {
char origin = word.charAt(j);
for (int m = 0; m < 26; m ++) {
if ('a' + m == origin) {
continue;
}
nwsb.setCharAt(j, (char)('a' + m));
if (wordDict.contains(nwsb.toString()) && !visited.contains(nwsb.toString())){
visited.add(nwsb.toString());
q.add(nwsb.toString());
}
}
nwsb.setCharAt(j, origin);
}
}
}
return 0;
}
}Last updated