One Edit Distance

lc161 One Edit Distance

Given two strings S and T, determine if they are both one edit distance apart.

题目很简单,就分两种情况

  1. s与t 长度相同
    • 完全相同,return false
    • 只能差一个,所以用一个boolean 来标记,一边iteration就行
  2. s与t 长度不同
    • 差2个以上,return false
    • 长度只能差一个,然后就是小的加或者长的删,所以这个时候index只长的变化。
   public boolean isOneEditDistance(String s, String t) {
        if (s.length() == t.length()){
            return update(s,t);
        }
        if (s.length() - t.length() == 1){
            return delete(s,t);
        }else if (s.length() - t.length() == -1){
            return delete(t,s);
        }
        return false;
    }

    public boolean update(String s, String t){
        int m = s.length();
        int n = t.length();
        boolean first = true;
        for (int i = 0; i < m; i++){
            if (s.charAt(i) != t.charAt(i)){
                if (first){
                    first = false;
                }else{
                    return false;
                }
            }
        }
        return !first;
    }

    public boolean delete(String ls, String ss){
        int m = ls.length();
        int n = ss.length();
        boolean first = true;

        int i = 0, j = 0;
        while (i < m && j < n){
            if (ls.charAt(i) != ss.charAt(j)){
                if (first){
                    i++;
                    first = false;
                }else{
                    return false;
                }
            }else{
                i++;
                j++;
            }
        }
        return true;
    }

results matching ""

    No results matching ""