leetcode161. 相隔为 1 的编辑距离

给定两个字符串 s 和 t,判断他们的编辑距离是否为 1。

注意:

满足编辑距离等于 1 有三种可能的情形:

往 s 中插入一个字符得到 t
从 s 中删除一个字符得到 t
在 s 中替换一个字符得到 t
示例 1:

输入: s = "ab", t = "acb"
输出: true
解释: 可以将 'c' 插入字符串 s 来得到 t。
示例 2:

输入: s = "cab", t = "ad"
输出: false
解释: 无法通过 1 步操作使 s 变为 t。
示例 3:

输入: s = "1203", t = "1213"
输出: true
解释: 可以将字符串 s 中的 '0' 替换为 '1' 来得到 t。

思路:很简单,你可以三个情形都对应的遍历一遍判断即可。

但是稍微有一点优化,其实如果s能删除一个字符变成t,那么t一定也可以插入一个字符得到s。

所以删除插入没必要都写,我们把短的字符串放在左边(s),就不用写删除了。

class Solution {public boolean isOneEditDistance(String s, String t) {int ns = s.length();int nt = t.length();//交换if (ns > nt)return isOneEditDistance(t, s);//长度差超过1if (nt - ns > 1)return false;//找到不同的字符for (int i = 0; i < ns; i++)if (s.charAt(i) != t.charAt(i))//如长度不同,那么两字符串后面应该相同if (ns == nt)return s.substring(i + 1).equals(t.substring(i + 1));//如长度不同,那么必须在s[i]插入t[i],所以要保证s.substring(i).equals(t.substring(i + 1))elsereturn s.substring(i).equals(t.substring(i + 1));return (ns + 1 == nt);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言-- 大端小端详解

一、什么是大端和小端 所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 简单来说:大端——高尾端,小端——低尾端 举个例子,比如数字 0x12 34 56 78…

leetcode164. 最大间距 借桶思想秒掉hard题

给定一个无序的数组&#xff0c;找出数组在排序之后&#xff0c;相邻元素之间最大的差值。 如果数组元素个数小于 2&#xff0c;则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。 示例 2: …

C++:18---函数模板(template)

一、模板的定义 template<typename T>以关键字template开头,后面跟一个模板参数列表,列表里面用逗号将多个模板参数隔开定义的注意事项模板的编译 当编译器遇到一个模板定义时,并不生成代码。只有当实例化处模板的一个特定版本时,编译器才会生成代码重点:通常,当我…

leetcode167. 两数之和 II - 并没有那么easy的easy题

给定一个已按照升序排列 的有序数组&#xff0c;找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2&#xff0c;其中 index1 必须小于 index2。 说明: 返回的下标值&#xff08;index1 和 index2&#xff09;不是从零开始的。 你可以假设每…

C++:21---仿函数

什么是仿函数 所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。 因此,这里需要明确两点: 1 仿函数不是函数,它是个类; 2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。 假设有一个vector<string>,你的任务…

C++:20---类模板(template)

一、类模板与模板类 类模板:一个模板(是模板)模板类:调用类模板生成的类对象(是类实体),也称为类模板的实例化类模板的定义: 与函数模板的定义是一样的template <typename T> class Blob { public: Blob(); Blob(std::initializer_list<T> i); };模板类的使…

leetcode340. 至多包含 K 个不同字符的最长子串

给定一个字符串 s &#xff0c;找出 至多 包含 k 个不同字符的最长子串 T。 示例 1: 输入: s "eceba", k 2 输出: 3 解释: 则 T 为 "ece"&#xff0c;所以长度为 3。 示例 2: 输入: s "aa", k 1 输出: 2 解释: 则 T 为 "aa"&am…

Redis线上救命丸:01---误操作AOF、RDB恢复数据

Redis的flushall/flushdb命令可以做数据清除&#xff0c;对于Redis的开发和运维人员有一定帮助&#xff0c;然而一旦误操作&#xff0c;它的破坏性也是很明显的。怎么才能快速恢复数据&#xff0c;让损失达到最小呢&#xff1f;本文我们将结合之前学习的Redis相关知识进行分析&…

Log4j使用总结

一、介绍Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通过定…

C语言: GDB调试技术(一)

启动GDB的方法有以下几种: 1、gdb <program> program也就是你的执行文件,一般在当然目录下。’ 例如我写了一个简单的helloword程序 #include <stdio.h> int main(){int a = 1;char* ch = "hello world";printf("%s\n",ch);return 0; }那么我…

C语言: ---windows下VS Debug调试

首先我先列出来常用的一些命令或者键盘控制: F5 开始调试,执行到断点 Shift + F5 停止调试 F9 在光标所在行添加断点 Shift + F9 QuickWatch Shift Ctrl F9 delete all 断点 F10 单步执行 F11 进入调用的函数 Shift F11 跳出这次调用的函数 另外还可以用Disable all breakpoi…

leetcode350. 两个数组的交集 II

给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1: 输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2,2] 示例 2: 输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [4,9] 说明&#xff1a; 输出结果中每个元素出现的次数&#xff0c;应与元素在两个数组中出…

C语言: ---Linux下ulimit是什么鬼

其实ulimit的讲解不属于C或者C++ 语言范畴,他只是在我们日常开发或者线上linux运行环境不可缺少的工具。 比如我们要查看服务器崩溃的core文件,允许core文件产生,都需要ulimit -c命令调整。 比如我们设置的当前运行环境的栈空间过小,容易产生栈溢出,那么我们…

C语言: ---gdb查看内存和寄存器内容

gdb没有CodeWarrior强大,但是也提供了查看寄存器的命令:(gdb) info register r1r1 0xbffffb40 3221224256(gdb) info registersr0 0x1000052c 268436780r1 0xbffffb40 3221224256r2 0x48026ea0 1208118944r3 …

leetcode52. N皇后 II 最强解法直接秒杀100%

n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n&#xff0c;返回 n 皇后不同的解决方案的数量。 示例: 输入: 4 输出: 2 解释: 4 皇后问题存在如下两个不同的解法。 [ […

C语言:---gdb多线程调试

1)恢复程序运行和单步调试 当程序被停住了,你可以用continue命令恢复程序的运行直到程序结束,或下一个断点到来。也可以使用step或next命令单步跟踪程序。 continue [ignore-count] c [ignore-count] fg [ignore-count] 恢复程序运行,直到程序结束,或是下一个断点到来。ig…

leetcode145. 二叉树的后序遍历 意想不到的骚操作

给定一个二叉树&#xff0c;返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 思路&#xff1a;前序遍历左右交换&#xff0c;然后倒序输出 原因&am…

C++:29 --- C++继承关系下的内存布局(下)

1 单继承 C++ 提供继承的目的是在不同的类型之间提取共性。比如,科学家对物种进行分类,从而有种、属、纲等说法。有了这种层次结构,我们才可能将某些具备特定性质的东西归入到最合适的分类层次上,如“怀孩子的是哺乳动物”。由于这些属性可以被子类继承,所以,我们只要知道…

C++:30 ---C++类成员,成员函数的内存布局

前面两篇文章我相信大家反复读了之后对这节不陌生了: 首先来看代码: class Demo { public://静态成员变量static const int sx = 0;//静态函数static void SF1() {} public://成员变量int x; public://成员函数void F1() {cout << "Im from Demo::F1()" <…

leetcode119. 杨辉三角 II 你能比我代码更短吗?

给定一个非负索引 k&#xff0c;其中 k ≤ 33&#xff0c;返回杨辉三角的第 k 行。 示例: 输入: 3 输出: [1,3,3,1]按照定义写即可。 class Solution:def getRow(self, rowIndex: int) -> List[int]:l[1]for i in range(rowIndex):l[1][l[j]l[j1] for j in range(len(l)-1…