127. Word Ladder

class Solution(object):
    def ladderLength(self, beginWord, endWord, wordList):
        """
        :type beginWord: str
        :type endWord: str
        :type wordList: Set[str]
        :rtype: int
        """
        wordList.add(endWord)
        cur=[beginWord] #possible transformation at each stage
        l=len(beginWord)
        distance=0 # keep track of the number of transformations 
        visited=set([beginWord]) #keep track of the set of visited words 
        while cur:
            next=[] #temp list to store each possible transformation at each stage 
            for word in cur:
                if word==endWord:
                    return distance+1
                for i in xrange(l): 
                    for j in 'abcdefghijklmnopqrstuvwxyz':
                        candidate=word[:i]+j+word[i+1:]
                        if candidate not in visited and candidate in wordList:
                            next.append(candidate)
                            visited.add(candidate)
                    
            distance+=1
            cur=next
        return 0
                
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Given two words (beginWord and endWord), and a dictionary...
    Jeanz阅读 117评论 0 0
  • 原题 给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列比如:1.每次只能改变一...
    Jason_Yuan阅读 1,271评论 1 2
  • 以下代码全部来自discuss。1.dijkstrahttps://leetcode.com/discuss/50...
    丁不想被任何狗咬阅读 313评论 0 0
  • Given two words (beginWord and endWord), and a dictionary...
    matrxyz阅读 192评论 0 0
  • 一直以来,我学东西总想着准备好了,学好了再去工作。晚上看笑来老师的文章,里面就提到一个观点:从一开始就像专业人士一...
    七巧板2015阅读 193评论 0 0