class Solution {
public int similarPairs(String[] words) {
int count = 0;
for (int i = 0; i < words.length; i++) {
for (int j = i + 1; j < words.length; j++) {
if (toCharSet(words[i]).equals(toCharSet(words[j]))) {
count++;
}
}
}
return count;
}
private Set<Character> toCharSet(String s) {
Set<Character> charSet = new HashSet<>();
for (char c : s.toCharArray()) {
charSet.add(c);
}
return charSet;
}
}
-
变量初始化:
-
int count = 0;
:count
用于记录相似对的数量,初始值为 0。
-
-
双重循环遍历字符串数组:
-
for (int i = 0; i < words.length; i++)
:外层循环遍历数组中的每一个字符串。 -
for (int j = i + 1; j < words.length; j++)
:内层循环从当前字符串的下一个字符串开始遍历,避免重复比较。 -
if (toCharSet(words[i]).equals(toCharSet(words[j])))
:调用toCharSet
方法将两个字符串转换为字符集合,并比较这两个集合是否相等。-
如果相等,说明这两个字符串是相似对,
count
加 1。
-
-
-
toCharSet
方法:-
private Set<Character> toCharSet(String s)
:这是一个辅助方法,用于将字符串s
转换为字符集合。 -
Set<Character> charSet = new HashSet<>();
:创建一个HashSet
来存储字符。 -
for (char c : s.toCharArray())
:遍历字符串中的每一个字符。 -
charSet.add(c);
:将字符添加到集合中。由于HashSet
会自动去重,因此集合中只包含唯一的字符。 -
return charSet;
:返回字符集合。
-
-
返回结果:
-
return count;
:最终返回相似对的数量。
-