Given two strings S and T, determine if they are both one edit distance apart.
Example
Given s = "aDb"
, t = "adb"
return true
思维惯性造成上来就想call Edit Distance的算法 然后看需要改多少步
后来想想这个问题“One”很特殊 要好好利用 才发现简单的string compare就可以解决
最后判断前面的字符全部相等的情况,此时只看长度
1 public class Solution { 2 /** 3 * @param s a string 4 * @param t a string 5 * @return true if they are both one edit distance apart or false 6 */ 7 public boolean isOneEditDistance(String s, String t) { 8 // Write your code here 9 if(s==null||t==null) return true; 10 if(s!=null&&t==null||s==null&&t!=null) return false; 11 int sLen = s.length(); 12 int tLen = t.length(); 13 if(Math.abs(sLen-tLen)>=2) return false; 14 15 for(int i=0; i<Math.min(sLen, tLen);i++){ 16 if(s.charAt(i) != t.charAt(i)){ 17 if(sLen==tLen ){ 18 return s.substring(i+1, sLen).equals(t.substring(i+1, tLen)); 19 } else if (sLen< tLen ){ 20 return s.substring(i, sLen).equals(t.substring(i+1, tLen)); 21 } else if (sLen> tLen ){ 22 return s.substring(i+1, sLen).equals(t.substring(i, tLen)); 23 } 24 } 25 } 26 if(sLen==tLen){ 27 return false; 28 }else{ 29 return true; 30 } 31 } 32 }