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
相关文章推荐
- LeetCode-72. Edit Distance (JAVA)字符串最小编辑距离DP&DFS
- leetcode 编辑距离
- leetcode:Edit Distance 编辑距离
- 【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】
- Leetcode 72. Edit Distance 编辑距离 解题报告
- 编辑距离算法的java实现
- java实现编辑距离算法,计算字符串相似度
- LeetCode之计算字符串相似度或编辑距离EditDistance
- LeetCode:Edit Distance(字符串编辑距离DP)
- leetCode 72.Edit Distance (编辑距离) 解题思路和方法
- LeetCode 161. One Edit Distance(编辑距离)
- LeetCode-Edit Distance 编辑距离与动态规划
- [LeetCode]-Edit Distance 两个字符串之间最小编辑距离
- LeetCode | Edit Distance(字符串编辑距离)
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- [LeetCode] [动态规划] [编辑距离] Edit Distance
- 【leetcode】编辑距离
- java--动态规划--编辑距离问题
- [LeetCode] One Edit Distance 一个编辑距离
- Leet Code 72 Edit Distance - 编辑距离 - Java