Question 4 Satisfiability of Equality Equations
Method Union Find
public boolean equationPossible(String[] equations) {
int[] laoda = new int[26];
for (int i =0; i < 26; i++) {
laoda[i] = i;
}
// "a==b"
for (String equation: equations) {
if (equation.charAt(1) == '=') {
int alaoda = find(laoda, equation.charAt(0) - 'a');
int blaoda = find(laoda, equation.charAt(3) - 'a');
if (alaoda != blaoda) {
laoda[alaoda] = blaoda;
}
}
}
for (String equation: equations) {
if (equation.charAt(1) == '!') {
int alaoda = find(laoda, equation.charAt(0) - 'a');
int blaoda = find(laoda, equation.charAt(3) - 'a');
if (alaoda != blaoda) {
return false;
}
}
}
}
private int find(int[] laoda, int a) {
return laoda[a] = laoda[a] == a? a: find(laoda, laoda[a]);
}Last updated