Created
November 2, 2022 11:26
-
-
Save dluciano/642f967029c18d55370ba8f8b7036e0a to your computer and use it in GitHub Desktop.
433. Minimum Genetic Mutation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Solution { | |
public int MinMutation(string start, string end, string[] bank) { | |
var q = new Queue<string>(); | |
var visited = new HashSet<string>(); | |
var minMutation = 0; | |
q.Enqueue(start); | |
while(q.Count > 0){ | |
var sz = q.Count; | |
while(sz > 0){ | |
var currentGen = q.Dequeue(); | |
if(currentGen == end) | |
return minMutation; | |
foreach(var bankGen in bank){ | |
if(visited.Contains(bankGen) || EditDistance(currentGen, bankGen) != 1) | |
continue; | |
q.Enqueue(bankGen); | |
visited.Add(bankGen); | |
} | |
sz--; | |
} | |
minMutation++; | |
} | |
return -1; | |
} | |
private static int EditDistance(in string s1, in string s2){ | |
var distance = 0; | |
for(var i = 0; i < s1.Length; ++i){ | |
if(s1[i] != s2[i]) | |
distance++; | |
} | |
return distance; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment