class Solution {
public int ladderLength(String beginWord, String endWord, List<String> wordList) {
Queue<String> q = new LinkedList<String>();
Set<String> words = new HashSet<String>(wordList);
words.remove(beginWord);
q.add(beginWord);
int level = 0;
while (!q.isEmpty()) {
int size = q.size();
level++;
for (int i = 0; i < size; i++) {
String currentWord = q.poll();
if (currentWord.equals(endWord)) return level;
List<String> neighbors = neighbors(currentWord);
for (String n : neighbors) {
if (words.contains(n)) {
words.remove(n);
q.add(n);
}
}
}
}
return 0;
}
public List<String> neighbors(String s) {
char[] chars = s.toCharArray();
List<String> result = new ArrayList<String>();
for (int i = 0; i < chars.length; i++) {
char temp = chars[i];
for (char c = 'a'; c <= 'z'; c++) {
chars[i] = c;
String neighbor = new String(chars);
result.add(neighbor);
}
chars[i] = temp;
}
return result;
}
}
Runtime: 78 ms, faster than 54.04% of Java online submissions for Word Ladder.
Memory Usage: 40.4 MB, less than 80.89% of Java online submissions for Word Ladder.
graph 문제