Minimum Genetic Mutation
Example
Input:
"AACCGGTT"
"AACCGGTA"
["AACCGGTA"]
Output: 1
Explanation:
start: "AACCGGTT"
end: "AACCGGTA"
bank: ["AACCGGTA"]Notice
Last updated
Input:
"AACCGGTT"
"AACCGGTA"
["AACCGGTA"]
Output: 1
Explanation:
start: "AACCGGTT"
end: "AACCGGTA"
bank: ["AACCGGTA"]Last updated
Input:
"AACCGGTT"
"AAACGGTA"
["AACCGGTA", "AACCGCTA", "AAACGGTA"]
Output: 2Input:
"AAAAACCC"
"AACCCCCC"
["AAAACCCC", "AAACCCCC", "AACCCCCC"]
Output: 3class Solution:
"""
@param start:
@param end:
@param bank:
@return: the minimum number of mutations needed to mutate from "start" to "end"
"""
def minMutation(self, start, end, bank):
# Write your code here
chars = ["A", "C", "G", "T"]
bank = set(bank)
def bfs():
q = [start]
distance = {start:0}
while q:
cur = q.pop(0)
if cur == end:
return distance[cur]
for i in range(len(cur)):
for j in chars:
nw = cur[:i] + j + cur[i+1:]
if nw in bank and nw not in distance:
distance[nw] = distance[cur] + 1
q.append(nw)
return -1
return bfs()