难度

  • 简单
  • 中等
  • 困难

    标签

    字符串、动态规划

    题目描述

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

    示例1:

    1. 输入:
    2. first = "pale"
    3. second = "ple"
    4. 输出: True

    实例2:

    1. 输入:
    2. first = "pales"
    3. second = "pal"
    4. 输出: False

    题解

  1. class Solution {
  2. public boolean oneEditAway(String first, String second) {
  3. if(first == null || second == null) {
  4. return false;
  5. }
  6. if(first.equals(second)) {
  7. return true;
  8. }
  9. int cha = first.length() - second.length();
  10. if(cha < -1 || cha > 1 ) {
  11. return false;
  12. }
  13. if(cha == -1) {
  14. return oneEditAway(second, first);
  15. }
  16. for(int i = 0; i < second.length(); i++) {
  17. if(first.charAt(i) != second.charAt(i)) {
  18. return first.substring(i + 1).equals(second.substring(cha == 0 ? i + 1 : i));
  19. }
  20. }
  21. return true;
  22. }
  23. }