[Leetcode] 161. One Edit Distance 解题报告
来源:互联网 发布:fedora linux镜像下载 编辑:程序博客网 时间:2024/06/05 06:30
题目:
Given two strings S and T, determine if they are both one edit distance apart.
思路:
One Edit Distance意味着一个字符串s可以通过删除,增加或者修改其中的一个字符变成另外一个字符串t。因此我们可以根据s和t的长度分别处理:如果两者长度相同,则判断s和t是否仅仅有一个字符不相同;如果t的长度比s长1,那么我们就同时从s和t的头部开始扫描,直到遇到第一个不相同的字符,假设此时不相同字符的索引是index,然后我们判断s[index]和t[index + 1]是否相等,直到index到达s的尾部(s的长度比t大1的情况可以对偶进行处理)。如果s和t的长度差大于1,那么一定不是One Edit Distance的,所以直接返回false即可。算法的时间复杂度是O(n),空间复杂度是O(1)。
代码:
class Solution {public: bool isOneEditDistance(string s, string t) { if (s.length() == t.length()) { return isModidyOneEditDistance(s, t); } else if (s.length() + 1 == t.length()) { return isAddOneEditDistance(s, t); } else if (t.length() + 1 == s.length()) { return isAddOneEditDistance(t, s); } else { return false; } }private: bool isModidyOneEditDistance(const string &s, const string &t) { // s and t has the same length int difference = 0; for (int i = 0; i < s.length(); ++i) { if (s[i] != t[i]) { ++difference; } } return difference == 1; } bool isAddOneEditDistance(const string &s, const string &t) { // s and t has difference lengths int diff_index = 0; // we assume t is 1 longer than s for (; diff_index < s.length(); ++diff_index) { if (s[diff_index] != t[diff_index]) { break; } } if (diff_index == s.length()) { return true; } else { for (; diff_index + 1 < t.length(); ++diff_index) { if (s[diff_index] != t[diff_index + 1]) { return false; } } return true; } }};
阅读全文
0 0
- [Leetcode] 161. One Edit Distance 解题报告
- [leetcode] One Edit Distance 解题报告
- [LeetCode] Edit Distance 解题报告
- Edit Distance [Leetcode解题报告]
- Leetcode-161.One Edit Distance
- [LeetCode]161. One Edit Distance
- LeetCode 161. One Edit Distance
- Leetcode 161. One Edit Distance
- LeetCode 161.One Edit Distance
- [leetcode] 72. Edit Distance 解题报告
- [Leetcode] 72. Edit Distance 解题报告
- 【LeetCode】72.Edit Distance解题报告
- Edit Distance 解题报告
- Leetcode One Edit Distance
- LeetCode - One Edit Distance
- leetcode - One Edit Distance
- #leetcode#One Edit Distance
- [LeetCode]One Edit Distance
- scala多线程demo
- 数据的位运算
- swift 单例的实现
- oj 1067: 顺序排号
- Jmeter断言-响应断言
- [Leetcode] 161. One Edit Distance 解题报告
- iOS 后台播放音乐问题记录
- Android ContextThemeWrapper应用
- JS工厂模式(工厂函数)、构造函数模式
- 14-1 创建线程()
- JAVA 基础语法(一)——变量以及基本数据类型
- windows下oracle 11g r2 安装过程与卸载详细图解
- Mac 安装 Tomcat
- java实现-hdfs上的文件上传下载(windows)