通过万岁!!!
- 题目:给你一个单词数组,然后找到里面两个单词word1和word2,然后两个单词最近的举例,注意,里面可能不只一个word1和word2。
- 思路:就是遍历,我们其实找word1和word2的下标即可,要是找到了,就让两个下标进行相减即可,两个下标每次更新,他们之间的距离都会变化,则都要算一下min。如果min等于1,则直接return即可。
- 技巧:字符数组的遍历。
java代码
class Solution {
public int findClosest(String[] words, String word1, String word2) {
// 差距最小就是1了
int min = Integer.MAX_VALUE;
int idx1 = -1, idx2 = -1;
for (int i = 0; i < words.length; i++) {
if (words[i].equals(word1)) {
idx1 = i;
if (idx2 == -1) continue;
min = Math.min(min, idx1 - idx2);// 因为1大于2
if (min == 1) {
return 1;
}
continue;
}
if (words[i].equals(word2)) {
idx2 = i;
if (idx1 == -1) continue;
min = Math.min(min, idx2 - idx1);// 因为2大于1
if (min == 1) {
return 1;
}
continue;
}
}
return min;
}
}
总结:题目相对简单,主要是想到我们只需要保存idx即可。跟 567.字符串的排列有点类似的,我们没必要把实际情况都找到,而是有针对的统计我们需要信息即可。