Question 3 Similar String Groups
Method 1: DFS
public int numberSimilarGroups(String[] strs){
int result = 0;
// assume strs are valid
Set<String> visited = new HashSet<>();
for (int i = 0; i < strs.length; i++) {
// 从所有没有出发过的点出发,每出发一次,一个cc就出来的
if (!visited.contains(str[i])) {
result++;
DFSMarkVisitedOne(strs, visited, i);
}
}
return result;
}
private void DFSMarkedVisitedOne(String[] strs, Set<String> visited, int index) {
visited.add(str[index]);
for (int i = 0; i < strs.length; i++) {
if (!visited.contains[strs[i]] && isSimilar(strs[i], strs[index])) {
DFSMarkVisitedOne(strs, visited, i);
}
}
}
private boolean isSimilar(String a, String b) {
int diff = 0;
int i = 0;
while (i < a.length()) {
if (a.charAt(i) != b.charAt(i)) {
diff++;
}
if (diff > 2) break;
i++;
}
//要么一样,要么至多2个不一样
return diff == 0 || diff == 2;
}
Method 2 Union Find
PreviousGraph Theory X: Union Find More Ractcce on UFNextQuestion 4 Satisfiability of Equality Equations
Last updated