面试题 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;}