leetcode原题 一次编辑(判定字符串是否只需要一次(或者零次)编辑)

news/2024/12/2 18:07:10/

题目:

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

输入: 
first = "pale"
second = "ple"
输出: True

解题思路:

本题可以分为以下几种情况来处理:

1.两个字符串长度相差=1,那么只需要判断哪个字符串更长,再判断将短字符串插入一个字符串后,是否符合条件

2.两个字符串长度相等,那么只能进行替换,不能插入

3.两个字符串长度相差>1,那么一次编辑是无法使两个字符串相等的,直接返回false即可

源代码如下:

class Solution {
public:bool oneEditAway(string first, string second) {int len1=first.size();int len2=second.size();//第一个字符串比第二个字符串长度多1个字符if(len1-len2==1){//给第二个字符串插入一个字符,判断是否跟第一个字符串相等return insert(first,second);}//第二个字符串比第一个字符串长度多1个字符else if(len2-len1==1){//给第一个字符串插入一个字符,判断是否跟第二个字符串相等return insert(second,first);}//两个字符串长度相等,那么只能通过替换实现,不能进行插入else if(len1==len2){return replace(first,second);}//剩下的情况:两个字符串长度相差大于1,不能只通过一次编辑实现else{return false;}}//插入函数bool insert(string Long, string Short){int i,j=0;while(i<Long.size()&&j<Short.size()){//如果两个字符相等if(Long[i]==Short[j]){//短字符下标继续走j++;}i++;//当下标i和j差值大于1时,说明 不止需要插入一个字符if(i-j>1) return false;}return true;}//替换函数bool replace(string first, string second){int i=0;int flag=0;//标记是否已经覆盖过while(i<first.size()){if(first[i]!=second[i]){//如果两个字符不相等的同时,flag还大于0,说明前面已经替换过一次了,直接返回falseif(flag>0){return false;}//若能替换,则flag++flag++;}i++;}return true;}
};

http://www.ppmy.cn/news/1019084.html

相关文章

WuThreat身份安全云-TVD每日漏洞情报-2023-08-09

漏洞名称:致远OA文件上传漏洞 漏洞级别:高危 漏洞编号:NULL 相关涉及:1. A6、A8、A8N的V8.0SP2、V8.1、V8.1SP1 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-19494 漏洞名称:Microsoft Exchange Server 欺骗漏洞 漏洞级别:高危 漏洞编号:CV…

MySQL SELECT语句知识点

目录 1、DELETE和TRUNCATE语句 2、REPLACE语句 3、SELECT语句中的算术表达式 4、NULL值的使用 5、定义字段的别名&#xff1a; 6、重复记录 7、限制所选择的记录 8、元字符&#xff08;正则表达式&#xff09; 9、数据分组&#xff08;GROUP BY&#xff09; 10、HAVING…

SpringBoot复习:(24)DeferredImportSelector

功能&#xff1a; 定一一个字符串数组&#xff0c;每个元素都是一个类的全限定名&#xff08;包名类名&#xff09;&#xff0c;把这些类的实例注册到Spring 容器。 一、定义要注册的类&#xff1a; package cn.edu.tju.service;import java.util.Arrays; import java.util.Li…

HCIA 路由器工作原理 及其 静态路由配置

目录 1、路由器工作原理 2、获取未知网段的方法&#xff1a; 3、静态路由 1&#xff09;写法&#xff1a; 2&#xff09;扩展配置 a、环回接口 配置命令&#xff1a; 环回接口的作用&#xff1a; b、手工汇总 手工汇总作用&#xff1a; c、路由黑洞 d、缺省路由 配置…

go的strings用法

strings 是 Go 语言标准库中提供的一个包&#xff0c;用于处理字符串相关的操作。这个包包含了许多函数&#xff0c;可以用于字符串的切割、拼接、替换、查找等操作。下面是一些常用的 strings 包函数和用法示例&#xff1a; package mainimport ("fmt""string…

消息队列比较

、ActiveMQ 优点&#xff1a;单机吞吐量万级&#xff0c;时效性ms级&#xff0c;可用性高&#xff0c;基于主从架构实现高可用性&#xff0c;消息可靠性较低的概率丢失数据。 缺点&#xff1a;官方社区现在对ActiveMQ5.X维护越来越少了&#xff0c;高吞吐量场景较少使用。 2、K…

B树的插入与删除过程

B树的插入 原树&#xff1a; 插入key后&#xff0c;若导致原节点关键字数超过上限&#xff0c;则从中间位置&#xff08; ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m​⌉&#xff09;将关键字分成两部分&#xff0c;左部分包含的关键字放在原节点中&#xff0c;右部分包含的关键…

时间复杂度空间复杂度相关练习题

1.消失的数字 【题目】&#xff1a;题目链接 思路1&#xff1a;排序——》qsort快排——》时间复杂度O&#xff08;n*log2n&#xff09; 不符合要求 思路2&#xff1a;&#xff08;0123...n)-(a[0]a[1][2]...a[n-2]) ——》 时间复杂度O&#xff08;N&#xff09;空间复杂度…