-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
/
Copy pathSolution.rs
32 lines (31 loc) · 1013 Bytes
/
Solution.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use std::collections::VecDeque;
impl Solution {
pub fn min_mutation(start: String, end: String, mut bank: Vec<String>) -> i32 {
let mut queue = vec![start].into_iter().collect::<VecDeque<String>>();
let mut res = 0;
while !queue.is_empty() {
let n = queue.len();
for _ in 0..n {
let s1 = queue.pop_front().unwrap();
if s1 == end {
return res;
}
for i in (0..bank.len()).rev() {
let s1 = s1.as_bytes();
let s2 = bank[i].as_bytes();
let mut count = 0;
for j in 0..8 {
if s1[j] != s2[j] {
count += 1;
}
}
if count <= 1 {
queue.push_back(bank.remove(i));
}
}
}
res += 1;
}
-1
}
}