面试题 01.05. 一次编辑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题 01.05. 一次编辑相关的知识,希望对你有一定的参考价值。
字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
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. 一次编辑的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 944. 删列造序 / 面试题 01.05. 一次编辑 / 691. 贴纸拼词(记忆化搜索+状压dp)