One Edit Distance
lc161 One Edit Distance
Given two strings S and T, determine if they are both one edit distance apart.
题目很简单,就分两种情况
- s与t 长度相同
- 完全相同,return false
- 只能差一个,所以用一个boolean 来标记,一边iteration就行
- s与t 长度不同
- 差2个以上,return false
- 长度只能差一个,然后就是小的加或者长的删,所以这个时候index只长的变化。
public boolean isOneEditDistance(String s, String t) {
if (s.length() == t.length()){
return update(s,t);
}
if (s.length() - t.length() == 1){
return delete(s,t);
}else if (s.length() - t.length() == -1){
return delete(t,s);
}
return false;
}
public boolean update(String s, String t){
int m = s.length();
int n = t.length();
boolean first = true;
for (int i = 0; i < m; i++){
if (s.charAt(i) != t.charAt(i)){
if (first){
first = false;
}else{
return false;
}
}
}
return !first;
}
public boolean delete(String ls, String ss){
int m = ls.length();
int n = ss.length();
boolean first = true;
int i = 0, j = 0;
while (i < m && j < n){
if (ls.charAt(i) != ss.charAt(j)){
if (first){
i++;
first = false;
}else{
return false;
}
}else{
i++;
j++;
}
}
return true;
}