同向双指针
这题注意审题
两个edge case:"a"->"" return true, "abc"->"abc" return false
可以 用两个指针i, j来 iterate两个string
并用一个boolean found=false来记录是否有不一样的char
如果遇到不一样的char需要判断是否之前已经有过不一样的char
如果是第一次不一样的话根据比较s.length和t.length来判断i-- or j--
public boolean isOneEditDistance(String s, String t) {
if (Math.abs(s.length() - t.length()) > 1 || s.equals(t)) return false;
boolean found = false;
//2 pointers
int i = 0, j = 0;
while (i < s.length() && j < t.length()) {
if (s.charAt(i) != t.charAt(j)) {
if (found) return false;
found = true;
if (s.length() < t.length()) {
i--;
} else if (s.length() > t.length()) {
j--;
}
}
i++;
j++;
}
return true;
}
Edit Distance
Last updated
Was this helpful?