Advertisement
afrishman

Untitled

May 26th, 2019
525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. static boolean isOneEditAway(String str1, String str2) {
  2. if (str1 == null || str2 == null || Math.abs(str1.length() - str2.length()) > 1) {
  3. return false;
  4. }
  5.  
  6. int lengthDiff = str1.length() - str2.length();
  7. int edits = 0;
  8. int i = 0, k = 0;
  9. for (; i < str1.length() && k < str2.length(); i++, k++) {
  10.  
  11. char c1 = str1.charAt(i);
  12. char c2 = str2.charAt(k);
  13.  
  14. if (c1 == c2) {
  15. continue;
  16. }
  17.  
  18. edits++;
  19.  
  20. if (edits > 1) {
  21. return false;
  22. }
  23.  
  24. if (lengthDiff == 0) {
  25. continue;
  26. }
  27.  
  28. if (lengthDiff == -1 && k != str2.length() - 1 && c1 == str2.charAt(k + 1)) {
  29. k++;
  30. } else if (lengthDiff == 1 && i != str1.length() - 1 && c2 == str1.charAt(i + 1)) {
  31. i++;
  32. }
  33. }
  34.  
  35. edits += str1.length() - i;
  36. edits += str2.length() - k;
  37.  
  38. return edits < 2;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement