Word Ladder II

Given two words (beginWordandendWord), and a dictionary's word list, find all shortest transformation sequence(s) frombeginWordtoendWord, such that:

  1. Only one letter can be changed at a time
  2. Each transformed word must exist in the word list. Note that beginWord is not a transformed word.

For example,

Given:
beginWord="hit"
endWord="cog"
wordList=["hot","dot","dog","lot","log","cog"]

Return

  [
    ["hit","hot","dot","dog","cog"],
    ["hit","hot","lot","log","cog"]
  ]

Note:

  • Return an empty list if there is no such transformation sequence.
  • All words have the same length.
  • All words contain only lowercase alphabetic characters.
  • You may assume no duplicates in the word list.
  • You may assume beginWord and endWord are non-empty and are not the same.

Solution:

  1. use map to store each level. Key being level number, value being set of words found

     1: [hit]
     2: [mit, sit, hot]
     3: [mig, set, dot, lot]
     4: [mog, seg, dof, dog, log]
     5: [cog]
    
  2. when the current ladder was completed, delete the visited words from unvisited.

  3. use character iteration with 26 letters for each word. It gives you constant time, 26, for each word

https://discuss.leetcode.com/topic/2857/share-two-similar-java-solution-that-accpted-by-oj

results matching ""

    No results matching ""