字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
示例 1:
输入:
first = “pale”
second = “ple”
输出: True
示例 2:
输入:
first = “pales”
second = “pal”
输出: False
简单的看一下就是对删除插入和替换的判断而已,也就是对三种状态的分析,挺简单的,代码如下:
class Solution {
public boolean oneEditAway(String first, String second) {
if(second.length() > first.length() + 1 ||second.length() < first.length() - 1) return false;
int flat = 0;
for(int i = 0,j = 0;i < first.length() && j < second.length();i++,j++){
if(first.charAt(i) != second.charAt(j) && first.length() > second.length() && flat == 0){
j--;
flat++;continue;
}else if(first.charAt(i) != second.charAt(j) && first.length() < second.length() && flat == 0){
i--;
flat++;continue;
}else if(first.charAt(i) != second.charAt(j) && first.length() == second.length() && flat == 0){
flat++;
continue;
}else if(first.charAt(i) != second.charAt(j)){return false;}
}
return true;
}
}
也就是对三种状态区分一下,对条件进行了一下判别
也没有官方的代码,看了一下别人的代码也就是这么比较,也没有什么可以去思考的点。