题目
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
示例 1:
输入:
first = “pale”
second = “ple”
输出: True
示例 2:
输入:
first = “pales”
second = “pal”
输出: False
代码
package dayLeetCode;
public class dayleetcode0105 {
public boolean oneEditAway(String first, String second) {
boolean flag = true;
// len的取值只能是-1 0 1
int len = second.length() - first.length();
if (len > 1 || len < -1){
return false;
}
int i = 0, j = 0;
// 记录编辑次数
int cnt = 0;
while (i < first.length() && j < second.length()){
if (first.charAt(i) != second.charAt(j)){
// 进行了插入、删除、或者替换操作
// 插入
if (len == 1){
cnt++;
// 先减后加保证i不变
i--;
}else if(len == 0){
// 替换
cnt++;
} else if (len == -1){
// 删除
cnt++;
j--;
}
}
if (cnt > 1){
flag = false;
break;
}
i++;
j++;
}
return flag;
}
public static void main(String[] args) {
dayleetcode0105 obj = new dayleetcode0105();
System.out.println(obj.oneEditAway("pale", "ple"));
}
}
该博客讨论了一种使用Java实现的方法,用于判断两个字符串是否只需要一次编辑操作(插入、删除或替换)即可相互转换。通过比较字符串长度并遍历字符,检查编辑距离,可以确定两个字符串的相似度。示例展示了如何判断'pale'和'ple',以及'pales'和'pal'是否满足条件。
401

被折叠的 条评论
为什么被折叠?



