广度优先搜索
class Solution {
public int minMutation(String start, String end, String[] bank) {
int[][] arr = new int[bank.length][bank.length];
ArrayList<String> list = new ArrayList<>();
list.add(start);
ArrayList<String> bankList = new ArrayList<>();
for (int i = 0; i < bank.length; i++) {
bankList.add(bank[i]);
}
return bfs(list, bankList, end, 1);
}
private int bfs(ArrayList<String> list, ArrayList<String> bank, String end, int count) {
ArrayList<String> newList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
for (int k = bank.size() - 1; k >= 0; k--) {
if (comp(list.get(i), bank.get(k)) == 1) {
if (bank.get(k).equals(end)) {
return count;
} else {
newList.add(bank.get(k));
bank.remove(k);
}
}
}
}
if(newList.size() == 0)
return -1;
return bfs(newList, bank, end, count+1);
}
private int comp(String a, String b) {
int count = 0;
for (int i = 0; i < a.length(); i++) {
if (a.charAt(i) != b.charAt(i))
count++;
}
return count;
}
}