Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int ladderLength(String s, String e, List<String> w) {
- if(s.length() != e.length() || s.equals(e)) return 0;
- Set<String> dict = new HashSet<>(w);
- if(!dict.contains(e)) return 0;
- Queue<String> queue = new LinkedList<>();
- queue.add(s);
- Queue<List<String>> paths = new LinkedList<>();
- List<String> path = new ArrayList<>(); // PRINT THE PATH
- path.add(s);
- paths.add(path);
- int count = 1;
- Set<String> visited = new HashSet<>();
- visited.add(s);
- while(!queue.isEmpty()) {
- int size = queue.size();
- for(int t = 0; t < size; t++) {
- String cur = queue.remove();
- List<String> p = paths.remove();
- if (cur.equals(e)) {
- System.out.print(String.join("->", p));
- return count;
- }
- for(int i = 0; i < cur.length(); i++) {
- String left = cur.substring(0, i);
- String right = cur.substring(i + 1);
- for(int k = 0; k < 26; k++) {
- String next = left + (char)('a' + k) + right;
- if (!visited.contains(next) && dict.contains(next)) {
- visited.add(next);
- queue.add(next);
- List<String> tmp = new ArrayList<>(p);
- tmp.add(next);
- paths.add(tmp);
- }
- }
- }
- }
- count++;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement