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
原创粉丝点击