2024-1-17
1.使用二维布尔数组来记录已经出现过的字母对。
2.通过遍历输入的字符串数组,获取每个字符串的第一个字母和第二个字母,并将它们转换为在数组中的索引。
3.如果在二维数组中发现了已经出现过的字母对,则表示可以组成一个匹配的字符串对,答案加一。
4.否则,将该字母对标记为已经出现过。最后返回答案
public int maximumNumberOfStringPairs(String[] words) {
int ans = 0; // 初始化答案
boolean[][] seen = new boolean[26][26]; // 创建一个二维数组来记录已经出现过的字母对
for (String s : words) { // 遍历输入的字符串数组
int x = s.charAt(0) - 'a'; // 获取字符串的第一个字母在数组中的索引
int y = s.charAt(1) - 'a'; // 获取字符串的第二个字母在数组中的索引
if (seen[y][x]) { // 如果看到了已经出现过的字母对(y+x),则说明可以组成一个匹配的字符串对
ans++; // 答案加一,表示发现了一个匹配的字符串对
} else {
seen[x][y] = true; // 否则将该字母对标记为已经出现过
}
}
return ans; // 返回答案
}