22/5/13-字符串编辑操作
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
class Solution {
public boolean oneEditAway(String first, String second) {
int m = first.length();
int n = second.length();
if (n - m == 1) {
return oneEditAway(second, first);//统一将first作为长字符串
}
if (n - m > 1 || m - n > 1) {//若两者相差大于一,则必定false
return false;
}
if (m == n) {//长度相等的情况
int sameCount = 0;//记录编辑次数
for (int i = 0; i < m; i++) {
if (first.charAt(i) != second.charAt(i)) {
sameCount++;
}
if (sameCount > 1) {
return false;
}
}
} else {//长度不等的情况,使用双指针
int f = 0;
int s = 0;
while (f < m && s < n) {
//若字符不同,删掉长字符串中字符,即将f指针加一
if (first.charAt(f) != second.charAt(s)) {
f++;
} else {
f++;
s++;
}
if (f - s > 1) {//判断,若两个指针相差大于1,则返回false
return false;
}
}
}
return true;
}
}