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之路的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试题01

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

leetcode 面试题 08.01. 三步问题

面试题 01.05. 一次编辑

leetcode 面试题 硬币(dp)

#yyds干货盘点# LeetCode程序员面试金典:一次编辑