Word Ladder II
来源:互联网 发布:数据库论文 编辑:程序博客网 时间:2024/06/14 03:18
public class Solution { public List<List<String>> findLadders(String beginWord, String endWord, Set<String> wordList) { List<List<String>> res = new LinkedList<>(); Set<String> visited = new HashSet<>(); Set<String> unVisited = new HashSet<>(); Queue<WordNode> queue = new LinkedList<>(); queue.offer(new WordNode(beginWord, new LinkedList<>())); unVisited.addAll(wordList); unVisited.add(endWord); //int prevSteps = 0; int prevSteps = 1; int min = Integer.MAX_VALUE; while (!queue.isEmpty()) { WordNode node = queue.poll(); int curSteps = node.getSteps(); String word = node.word; if (word.equals(endWord)) { if (curSteps > min) { return res; } min = curSteps; res.add(node.list); } if (curSteps > prevSteps) { prevSteps = curSteps; //unVisited.clear(); unVisited.removeAll(visited); } for (int i = 0; i < word.length(); i++) { char[] chars = word.toCharArray(); for (char c = 'a'; c <= 'z'; c++) { if (chars[i] == c) { continue; } chars[i] = c; String newWord = new String(chars); if (unVisited.contains(newWord)) { queue.offer(new WordNode(newWord, node.list)); visited.add(newWord); } } } } return res; } private class WordNode { List<String> list; String word; public WordNode (String word, List<String> list) { this.word = word; this.list = new LinkedList<>(list); this.list.add(word); } public int getSteps() { return list.size(); } }}
0 0
- Word Ladder/ Word Ladder II
- Word Ladder II
- Word Ladder II
- 【leetcode】Word Ladder II
- [LeetCode]Word Ladder II
- Word Ladder II
- [leetcode] Word Ladder II
- LeetCode - Word Ladder II
- Word Ladder II
- Leetcode: Word Ladder II
- leetcode Word Ladder II
- Leetcode Word Ladder II
- LeetCode | Word Ladder II
- Word Ladder II
- Word Ladder II
- Word Ladder II
- leetcode word ladder II
- 【Leetcode】Word Ladder II
- sphinx 源码阅读之 分词,压缩索引,倒排
- iOS block
- Multi-University 2015 #7 F(hdu 5374 Tetris)
- 决策树(ID3,C4.5)Python实现
- 和最接近定值的元组
- Word Ladder II
- RaspberryPi 3B之初体验笔记
- STL vector用法介绍
- Android系统的常用权限
- vmware中使用net方式配置docker静态ip
- 根据Model部署流程
- MySQL的redo和undo
- 折半查找。。。
- 我的WEB学习生涯(持续更新)