
思路: 这道题其实就是243的小小变形,多了一种情况:word1 = word2而已。我自己的想法是把这种情况单独列出,觉得这样会比较清楚。答案是写在一起的,其实相比concise code,我更倾向short code,看起来比较厉害一点,而且我觉得能将两种情况放在一个循环里写出来,对于逻辑层面的理解来说会更加深入,是一种更深入理解的体现。我自己的思路我没有实现,因为我觉得很简单,下面展示答案代码:
class Solution {
public int shortestWordDistance(String[] words, String word1, String word2) {
int idx1 = -1, idx2 = -1, min = Integer.MAX_VALUE;
for(int i = 0; i < words.length; i++){
if(words[i].equals(word1)){
idx1 = i;
if(idx2 != - 1){
min = Math.min(min,idx1 - idx2);
}
}
if(words[i].equals(word2)){
// 如果相等的话,那么idx1指向前一个满足条件的下标
if(word1.equals(word2)){
idx1 = idx2; // 这边idx2就是前一个满足条件的下标
}
idx2 = i; // 与此同时idx2变为最新(当前)满足条件的下标
if(idx1 != - 1){
min = Math.min(min,idx2 - idx1);
}
}
}
return min;
}
}
总结:
- 243,244,245这三题放一起看。
- string相等比较用equals()函数,而不是用==
本文解析了LeetCode题目245最短单词距离III的解决方案,介绍了如何处理word1等于word2的情况,通过示例代码展示了如何在循环中同时考虑两种情况,达到更深层次的逻辑理解。
533

被折叠的 条评论
为什么被折叠?



