字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
示例 1:
输入:
first = "pale"
second = "ple"
输出: True
示例 2:
输入:
first = "pales"
second = "pal"
输出: False
分析题意可知,如果两个字符串长度差值大于1,则直接返回false;如果相等,执行的是替换操作,如果大于是执行的删除操作,如果小于执行的是插入操作。
因为只进行了一次操作,我们可以找到操作的地方,然后跳过,判断后面的字符串是否相等,如果相等则只需要一次编辑
var oneEditAway = function(first, second) {
if(Math.abs(first.length-second.length)>1){
return false;
}
if(first===second){
return true;
}
if(first.length>second.length){
[second,first]=[first,second]
}
for(let i=0;i<first.length;i++){
if(first[i]!==second[i]){
return first.slice(i+1)===second.slice(i+1)//字符串相等
||first.slice(i)===second.slice(i+1);//字符串不相等
}
}
return true;
};