1.题目
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
示例 1:
输入:
first = "pale"
second = "ple"
输出: True
示例 2:
输入:
first = "pales"
second = "pal"
输出: False
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/one-away-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
思路:双指针
class Solution
{
public:
bool oneEditAway(string first, string second)
{
int len = first.length()-second.length();
if (len>1||len<-1)
return false;
int count=1;
for (int i = 0,j=0; i < first.length()&&j < second.length(); i++,j++)
{
if (first[i]!=second[j])
{
if (len==1) //second要不要添加一个字符
{
j--;
}
else if (len==-1) //second要不要删除一个字符
{
i--;
}
count--;
}
if (count<0) //最多编辑一次
{
return false;
}
}
return true;
}
};