LeetCode 面试题 01.05 一次编辑[模拟 双指针] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 面试题 01.05 一次编辑[模拟 双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
非常简单的一道模拟题,首先如果字符串长度差距1以上返回false,字符串相等返回true,定义双指针分别遍历两个字符串,遇到对应位置相等继续,不等又分两种情况,如果是长度相同,那么都跳一位,不等,长的跳一位,短的不动,代码如下:
class Solution
public:
bool oneEditAway(string first, string second)
if(first == second) return true;
int n1 = first.size(), n2 = second.size();
if(abs(n1 - n2) > 1) return false;
int count = 0;
int i = 0, j = 0;
while(i < n1 && j < n2)
if(first[i] != second[j])
if(n1 != n2)
if(n1 > n2) i ++;
else j ++;
else
i ++;
j ++;
count ++;
if(count > 1) return false;
else
i ++;
j ++;
return true;
;
简单优化一下即为:
class Solution
public:
bool oneEditAway(string first, string second)
if(first == second) return true;
int n1 = first.size(), n2 = second.size();
if(abs(n1 - n2) > 1) return false;
int count = 0;
int i = 0, j = 0;
while(i < n1 && j < n2)
if(first[i] != second[j])
if(n1 != n2)
if(n1 > n2) j --;
else i --;
count ++;
if(count > 1) return false;
i ++;
j ++;
return true;
;
以上是关于LeetCode 面试题 01.05 一次编辑[模拟 双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 944. 删列造序 / 面试题 01.05. 一次编辑 / 691. 贴纸拼词(记忆化搜索+状压dp)