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

    示例 1:

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

    示例 2:

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


    1. class Solution {
    2. public boolean oneEditAway(String first, String second) {
    3. if (first.equals(second)) return true;
    4. int n = first.length(), m = second.length();
    5. if (Math.abs(n - m) > 1) return false;
    6. //保证a长度更短
    7. if (n > m) return oneEditAway(second, first);
    8. int i = 0, j = 0, cnt = 0;
    9. while (i < n && j < m) {
    10. if (first.charAt(i) == second.charAt(j)) {
    11. i ++; j++;
    12. } else {
    13. //应该都往后移动
    14. if (n == m) {
    15. i ++; j++;
    16. } else {
    17. j ++;
    18. }
    19. cnt ++;
    20. }
    21. }
    22. return cnt < 2;
    23. }
    24. }