题目
思路
- 利用递归去控制
first
的长度始终小于等于second
的长度。 - 如果长度之差超过1,返回
false
- 如果长度恰好相等,那么利用计数器去判断
-
利用递归去控制first的长度始终小于等于second的长度。代码
class Solution {
public:
bool oneEditAway(string first, string second) {
int len_first = first.size(), len_second = second.size();
if (len_first > len_second) {
return oneEditAway(second, first);
}
if (len_second - len_first > 1) {
return false;
}
if (len_first == len_second) {
int cnt = 0;
for (int i = 0; i < len_first; i++) {
if (first[i] == second[i]) {
continue;
} else {
cnt += 1;
}
if (cnt > 1) {
return false;
}
}
return true;
}
if (len_first + 1 == len_second) {
int p1 = 0, p2 = 0, cnt = 0;
while (p1 < len_first && p2 < len_second) {
if (first[p1] != second[p2]) {
if (cnt == 0) {
p2 += 1;
cnt += 1;
} else {
return false;
}
} else {
p1++;
p2++;
}
}
return true;
}
return false;
}
};