Note:
1. Need check i < s.length() and j < t.length().
2. Only make i-- when s.length() < t.length() since it could be replacement. No need for shift
class Solution { public boolean isOneEditDistance(String s, String t) { if (s.length() > t.length()) { return isOneEditDistance(t, s); } if (t.length() - s.length() > 1) { return false; } boolean found = false; for (int i = 0, j = 0; i < s.length() && j < t.length(); i++, j++) { if (s.charAt(i) != t.charAt(j)) { if (found) { return false; } found = true; if (t.length() > s.length()) { i--; } } } return found || (t.length() - s.length()) == 1; }}