给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。
word1 和 word2 是有可能相同的,并且它们将分别表示为列表中两个独立的单词。
示例:
假设 words = [“practice”, “makes”, “perfect”, “coding”, “makes”].
输入: word1 = “makes”, word2 = “coding”
输出: 1
输入: word1 = “makes”, word2 = “makes”
输出: 3
注意:
你可以假设 word1 和 word2 都在列表里。
/**
用计数器%2来分辨是哪个word
*/
public class Test {
public static void main(String[] args) {
String[] s = {"practice", "makes", "perfect", "coding", "makes"};
String word1 = "makes",word2 = "makes";
//使用turn来判断是第几个重复的。使用ioc来判断两数是否相等
int dis = Integer.MAX_VALUE,index1=-1,index2=-1,turn=0,ioc=word1.equals(word2)?1:0;
for(int i=0;i<s.length;i++){
//相等,你一次我一次。turn+ioc(1)
//不相等,就照常运行。trun+ioc(0)
if(s[i].equals(word1)&&turn%2==0){
index1 = i;
if(index2!=-1) dis = Math.min(dis,index1-index2);
turn+=ioc;
}
else if(s[i].equals(word2)){
index2 = i;
if(index1!=-1) dis = Math.min(dis,index2-index1);
turn+=ioc;
}
}
System.out.println(dis);
}
}