面试题 01.05、一次编辑

字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

示例 1:
输入:
first = “pale”
second = “ple”
输出: True

示例 2:
输入:
first = “pales”
second = “pal”
输出: False


Java代码1:

public boolean oneEditAway(String a, String b) { int n = a.length(); int m = b.length(); if (Math.abs(n - m) > 1) return false; if (n > m) return oneEditAway(b, a); // 确保长度a <= b int i = 0, j = 0, cnt = 0; while (i < n && j < m && cnt <= 1) { if (a.charAt(i) == b.charAt(j)) { i++; j++; } else { if (n == m) { i++; j++; cnt++; } else { j++; cnt++; } } } return cnt <= 1;}