字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
示例 1:
输入:
first = "pale"
second = "ple"
输出: True
示例 2:
输入:
first = "pales"
second = "pal"
输出: False
基本思路:双指针,因为最多只有一个字符不同,我们我可以分别从前向后和从后往前遍历,根据遍历到的位置判断是否符合要求
bool oneEditAway(string first, string second) {
int len1=first.size();
int len2=second.size();
if(abs(len1-len2)>1)
return false;
int i=0,r1=len1-1,r2=len2-1;
while(i<len1&&first[i]==second[i]){
i++;
}
while(r1>=0&&r2>=0&&first[r1]==second[r2]){
r1--;
r2--;
}
return r1<=i&&r2<=i;
}
基本思路2:可以动态规划,思路同72.编辑距离