Advertisement
Guest User

Untitled

a guest
May 25th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.70 KB | None | 0 0
  1.     public int ladderLength(String s, String e, List<String> w) {
  2.         if(s.length() != e.length() || s.equals(e)) return 0;
  3.        
  4.         Set<String> dict = new HashSet<>(w);
  5.         if(!dict.contains(e)) return 0;
  6.        
  7.         Queue<String> queue = new LinkedList<>();
  8.         queue.add(s);
  9.        
  10.         Queue<List<String>> paths = new LinkedList<>();
  11.         List<String> path = new ArrayList<>();  // PRINT THE PATH
  12.         path.add(s);
  13.        
  14.         paths.add(path);
  15.         int count = 1;
  16.         Set<String> visited = new HashSet<>();
  17.         visited.add(s);
  18.        
  19.         while(!queue.isEmpty()) {
  20.             int size = queue.size();
  21.             for(int t = 0; t < size; t++) {
  22.                 String cur = queue.remove();
  23.                 List<String> p = paths.remove();
  24.                
  25.                 if (cur.equals(e)) {
  26.                     System.out.print(String.join("->", p));
  27.                     return count;
  28.                 }
  29.  
  30.                 for(int i = 0; i < cur.length(); i++) {
  31.                     String left = cur.substring(0, i);
  32.  
  33.                     String right = cur.substring(i + 1);
  34.  
  35.                     for(int k = 0; k < 26; k++) {
  36.                         String next = left + (char)('a' + k) + right;
  37.                         if (!visited.contains(next) && dict.contains(next)) {
  38.                             visited.add(next);
  39.                             queue.add(next);
  40.                             List<String> tmp = new ArrayList<>(p);
  41.                             tmp.add(next);
  42.                             paths.add(tmp);
  43.                         }
  44.                     }
  45.                 }  
  46.             }
  47.             count++;
  48.            
  49.         }
  50.        
  51.         return 0;
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement