Skip to content

Instantly share code, notes, and snippets.

@dluciano
Created November 2, 2022 11:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dluciano/642f967029c18d55370ba8f8b7036e0a to your computer and use it in GitHub Desktop.
Save dluciano/642f967029c18d55370ba8f8b7036e0a to your computer and use it in GitHub Desktop.
433. Minimum Genetic Mutation
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