//现在做题做了这么多了,凡是难做对多题目,俩类。 一类是方法很隐藏,不容易想到,要拐个弯。这类很tricky,要求经验和灵活性。
//第二类,题目清楚,思路很容易察觉,但是容易察觉却不同意看到全面,急于下手往往自乱阵脚。这类题要求耐心和洞察力。
//这个题目,就是典型的第二类。下面解法是一种 O(1)space的最优解
//这个题更为直观的方法需要用到额外space 可以用map计数来做,去排查是不是one edit distance
//另外这个题把modify or delete俩种情况分开处理也会清晰很多
public boolean isOneEditDistance(String s, String t) {
int i = 0;
int j = 0;
int err = 0;
boolean flag = true;
if(Math.abs(s.length() - t.length()) > 1)
return false;
while(i < s.length() && j < t.length()){
if(s.charAt(i) != t.charAt(j)){
err += 1;
if(err == 1 && flag && s.length() > t.length()){
flag = false;
j--;
}
if(err == 1 && flag && s.length() < t.length()){
flag = false;
i--;
}
}
i++;
j++;
}
if(i < s.length()){
err += (s.length() - i);
}
if(j < t.length()){
err += (t.length() - j);
}
System.out.println(err);
return err == 1;
}
[LeetCode]One Edit Distance
最新推荐文章于 2020-05-25 11:38:31 发布