161 相隔为1的编辑距离

  1. class Solution {
  2. public boolean isOneEditDistance(String first, String second) {
  3. if (first == null && second == null)
  4. return true;
  5. if (first.equals(second))
  6. return false;
  7. // 两个字符串的长度相等时逐个进行判断
  8. if (first.length() == second.length()) {
  9. int diff = 0;
  10. for (int i = 0; i < first.length(); ++i) {
  11. if (first.charAt(i) != second.charAt(i))
  12. ++diff;
  13. if (diff >= 2)
  14. return false;
  15. }
  16. return true;
  17. } // if
  18. // 两个字符串的长度相差1时,碰到不相等位置长串指针后移2步
  19. else if (Math.abs(first.length() - second.length()) == 1) {
  20. int i = 0, j = 0;
  21. int diff = 0;
  22. while (i < first.length() && j < second.length()) {
  23. if (first.charAt(i) != second.charAt(j)) {
  24. ++diff;
  25. if (diff >= 2)
  26. return false;
  27. if (first.length() > second.length())
  28. ++i;
  29. else
  30. ++j;
  31. }
  32. else if (first.charAt(i) == second.charAt(j)) {
  33. ++i;
  34. ++j;
  35. }
  36. } // while
  37. return true;
  38. }
  39. return false;
  40. }
  41. }