BiruLyu
6/21/2017 - 6:51 AM

161. One Edit Distance(1st).java

public class Solution {
    public boolean isOneEditDistance(String s, String t) {
        if (s == null || t == null) return false;
        int len1 = s.length();
        int len2 = t.length();
        if (Math.abs(len1 - len2) > 1) return false;
        if (len1 > len2) return isOneEditDistance(t, s);
        int diff = len2 - len1;
        int i = 0;
        int j = 0;
        

        while(i < len1 && s.charAt(i) == t.charAt(i)) {
            i++;
        }
        if (diff == 0) {
            i++;
        } 

        while(i < len1 && s.charAt(i) == t.charAt(i + diff)) {
            i++;
        }

        return i == len1;
        
    }
}
public class Solution {
    public boolean isOneEditDistance(String s, String t) {
        int m = s.length();
        int n = t.length();
        if (m - n >= 2 || n - m >= 2) return false;
        if (m == n) {
            int num = 0;
            for (int i = 0; i < m; ++i) {
                if (s.charAt(i) != t.charAt(i)){
                    num++;
                    if (num == 2) {
                        return false;
                    }
                }
            }
            return num == 1;
        }
        if (n > m) {
            String temp = s;
            s = t;
            t = temp;
        }
        int j = 0;
        for (int i = 0; i < t.length(); ++i) {
            if (s.charAt(j) != t.charAt(i)){
                j++;
                if (j - i >= 2) {
                    return false;
                }
                i--;
            }
            else j++;
        }
        if (j == t.length()) return true;
        else return s.charAt(s.length() - 1) == t.charAt(t.length() - 1);
    }
}