您的位置:首页 > 编程语言 > Java开发

LeetCode-161.One Edit Distance (JAVA)一次编辑距离

2017-04-27 11:28 387 查看

161.One Edit Distance

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

这道题只让我们判断两个字符串的编辑距离是否为1,那么我们只需分下列三种情况来考虑就行了:


1. 两个字符串的长度之差大于1,那么直接返回False

2. 两个字符串的长度之差等于1,那么长的那个字符串去掉一个字符,剩下的应该和短的字符串相同

3. 两个字符串的长度之差等于0,那么两个字符串对应位置的字符只能有一处不同。

public boolean isOneEditDistance(String s, String t) {
// 让s指向长的字符串
if (s.length() < t.length()) {
String tmp = s;
s = t;
t = tmp;
}
int m = s.length();
int n = t.length();
int diff = m - n;// diff>=0
// 两个字符串的长度之差大于1,那么直接返回False
if (diff >= 2) {
return false;
// 两个字符串的长度之差等于1,那么长的那个字符串去掉一个字符,
// 剩下的应该和短的字符串相同
} else if (diff == 1) {
// 小于长度小的
for (int i = 0; i < n; i++)
// 到了i,说明0~i-1字符相等,
// 只要判断剩下的是否相等即可
if (s.charAt(i) != t.charAt(i))
// s去掉一个字符,而t不变
return s.substring(i + 1) == t.substring(i);

} else {
// 两个字符串的长度之差等于0,
// 那么两个字符串对应位置的字符只能有一处不同。
int cnt = 0;
for (int i = 0; i < n; ++i)
if (s.charAt(i) != t.charAt(i))
++cnt;
return cnt == 1;
}
return true;

}
参考:https://segmentfault.com/a/1190000003906621
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息