栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣每日一题小记(面试题 01.05. 一次编辑)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣每日一题小记(面试题 01.05. 一次编辑)

题目与示例

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

来源:力扣(LeetCode)

示例 1:
输入:
first = “pale”
second = “ple”
输出: True

示例 2:
输入:
first = “pales”
second = “pal”
输出: False


文章目录
  • 题目与示例
  • 一、思路
  • 二、解题代码


一、思路

该题目要求我们返回是否可以通过一次编辑来使first == second,所谓的编辑包括插入一个字符、删除一个字符或者替换一个字符。

由题意易知,first和second字符串之间至多有1处不同时,才能通过一次修改来达到题目要求,所以当两个字符串长度的差值的绝对值比1大时,我们直接返回false即可。
我们使用双指针来解决这个问题,fir_p作为first字符串的指针指向first中的每一个字符,sec_p作为second字符串的指针指向second中的每一个字符。used用于表示当前是否已经使用了一次编辑的机会,如果使用了即为true。

我们分为三种情况进行遍历,当两个字符串长度相等时,指针遇到不一样的内容时,将used设置为true,然后按照顺序访问后面的内容即可;当两个字符串长度不相等时,指针遇到不一样的内容时,将used设置为true,然后让较长字符串的指针后移且保持较短字符串的指针不动。一直遍历到字符串的最后一个元素即可。
如果我们在使用双指针对两个字符串进行遍历的时候,发现used==true的条件下,两个指针所指向的内容也不同时,说明我们需要大于1次的编辑,返回false即可。否则返回true。

二、解题代码

解题代码如下:

class Solution {
public:
    bool oneEditAway(string first, string second) {
        int fir_len = first.length(), sec_len = second.length();
        if(abs(fir_len - sec_len) > 1)return false;
        bool used = false;//用于表示是否已经使用了一次编辑的机会
        int fir_p = 0, sec_p = 0;//指向两个字符串的指针
        while(fir_p
            if(first[fir_p] != second[sec_p]){
                if(used == true) {//当使用过一次编辑机会后,又出现了需要修改的地方
                    return false;//返回false
                }
                used = true;
                if(fir_len == sec_len){
                    fir_p++;
                    sec_p++;
                }else if(fir_len < sec_len){
                    sec_p++;
                }else{
                    fir_p++;
                }//对不同情况的字符串进行分类讨论
            }else{
                fir_p++;
                sec_p++;
            }
        }
        return true;
    }
}; 

注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号