这道题自己提交了三次才通过,两次错误都是自己考虑问题的不全面
1. 遇到[a, b], w1:a , w2: b怎么办,错误返回了Integer.MAX_VALUE
2. 遇到[a, c, b, b, a],w1:a , w2: b怎么办, 错误返回了2,注意当中的一个性质,例如,如果pos1不是-1,pos2不是-1,当算出了dist,pos1就该一直保持更新,与dist的大小无关了,自己一开始想到了
if (pos2 == -1) {
pos1 = i;
} else {
的道理,却忽略了//2的错误
public class Solution {
public int shortestDistance(String[] words, String word1, String word2) {
int dist = Integer.MAX_VALUE;
int pos1 = -1, pos2 = -1;
for (int i = 0; i < words.length; i++) {
if (words[i].equals(word1)) {
if (pos1 == -1) {
pos1 = i;
} else {
if (pos2 == -1) {
pos1 = i;
} else {
int temp = i - pos2;
pos1 = i;
if (temp <= dist) {
//2 pos1 = i;
dist = temp;
}
}
}
}
if (words[i].equals(word2)) {
if (pos2 == -1) {
pos2 = i;
} else {
if (pos1 == -1) {
pos2 = i;
} else {
int temp = i - pos1;
pos2 = i;
if (temp <= dist) {
//2 pos2 = i;
dist = temp;
}
}
}
}
/// 1
if (dist == Integer.MAX_VALUE && pos1 != -1 && pos2 != -1) {
dist = Math.abs(pos1 - pos2);
}
/// 1
}
///
//1 if (dist == Integer.MAX_VALUE) {
// dist = Math.abs(pos1 - pos2);
//1 }
//
return dist;
}
}