面试题 01.05. 一次编辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题 01.05. 一次编辑相关的知识,希望对你有一定的参考价值。


字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

链接: ​​https://leetcode.cn/problems/one-away-lcci/​

class Solution

public:
bool oneEditAway(string first, string second)

// 直会存在两中情况
// 替换 -- 两个字符串的长度是相等的
// 删除/增加 -- 字符串长度 相差 1
int s1 = first.size();
int s2 = second.size();
int count = 0;
if (s1 == s2)

// 替换操作
for (int i = 0; i < s1; i++)

if (first[i] != second[i])
count++;


else if (s1 - 1 == s2)

int begin1 = 0;
int begin2 = 0;
while (begin1 < s1 && begin2 < s2)

if (first[begin1] != second[begin2])

count++;
begin1++;

else

begin1++;
begin2++;



// s1 插入了一个元素 或者 s2删除一个长度

else if (s2 - 1 == s1)

// s2 插入了一个元素 或者 s1删除一个长度
int begin1 = 0;
int begin2 = 0;
while (begin1 < s1 && begin2 < s2)

if (first[begin1] != second[begin2])

count++;
begin2++;

else

begin1++;
begin2++;



else

return false;


// 这里我们只需要判断 计数器就可以了
if (count > 1)

return false;

else

return true;


;


以上是关于面试题 01.05. 一次编辑的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试金典面试题 01.05. 一次编辑

LeetCode 944. 删列造序 / 面试题 01.05. 一次编辑 / 691. 贴纸拼词(记忆化搜索+状压dp)

LeetCode 五月打卡-day12

LeetCode 面试题 01.05 一次编辑[模拟 双指针] HERODING的LeetCode之路

LeetCode - 操作次数不重复数字对角线遍历约瑟夫环

文巾解题 01.05. 一次编辑