Description

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

Hint

Train of Thought

/*

  • There're 3 possibilities to satisfy one edit distance apart:
  • 1) Replace 1 char:
    s: a B c
    t: a D c
    
  • 2) Delete 1 char from s: s: a D b c t: a b c
  • 3) Delete 1 char from t s: a b c t: a D b c */

    Code

      public boolean isOneEditDistance\(String s, String t\) {
      for \(int i = 0; i < Math.min\(s.length\(\), t.length\(\)\); i++\) { 
     ```
      if (s.charAt(i) != t.charAt(i)) { 
     if (s.length() == t.length()) // s has the same length as t, so the only possibility is replacing one char in s and t
         return s.substring(i + 1).equals(t.substring(i + 1));
     else if (s.length() < t.length()) // t is longer than s, so the only possibility is deleting one char from t
         return s.substring(i).equals(t.substring(i + 1));                
     else // s is longer than t, so the only possibility is deleting one char from s
         return t.substring(i).equals(s.substring(i + 1));
         }                
    
         }       
     //All previous chars are the same, the only possibility is deleting the end char in the longer one of s and t 
     return Math.abs\(s.length\(\) - t.length\(\)\) == 1;        
     }                
    

    Complexity

results matching ""

    No results matching ""