【leetcode】433. Minimum Genetic Mutation

题目如下:

解题思路:我的思路很简单,就是利用BFS方法搜索,找到最小值。

代码如下:

class Solution(object):
    def canMutation(self, w, d, c, q):
        l = ["A",'C','G','T']
        for i in range(len(w)):
            for j in l:
                if w[i] != j:
                    v = w[:i] + j + w[i + 1:]
                    if v in d and (d[v] == 0 or d[v] > c + 1):
                        d[v] = c + 1
                        q.append(v)

    def minMutation(self, start, end, bank):
        """
        :type start: str
        :type end: str
        :type bank: List[str]
        :rtype: int
        """
        if end not in bank:
            return -1
        dic = {}
        count = 0
        for i in bank:
            dic[i] = count
        queue = [start]
        while len(queue) > 0:
            q2 = []
            for i in queue:
                self.canMutation(i, dic, count, q2)
            if dic[end] != 0:
                break
            queue = q2
            q2 = []
            count += 1
        # print dic
        if dic[end] == 0:
            return -1
        return dic[end]

 

posted @ 2018-09-07 11:18  seyjs  阅读(239)  评论(0编辑  收藏  举报