当前位置: 首页 > news >正文

【LeetCode刷题】-- 161.相隔为1的编辑距离

161.相隔为1的编辑距离

image-20231216130650581

方法:一次遍历

首先,我们要确认字符串的长度不会相差太远。如果长度差了2个或更多字符,那么 st 就不可能是一次编辑之差的字符串。

接下来,我们假设 s 的长度总是短于或等于 t 的长度。如果不是这样,人们总是可以调用 isOneEditDistance(t, s) 来逆转字符串的顺序。
现在是时候沿着字符串前进,寻找第一个不同的字符了。
如果前 len(s) 字符没有差异,只有两种可能的情况:

  • 字符串是相等的。
  • 字符串是一次编辑之差的距离。

image.png

那么如果存在一个不同的字符,使得 s[i] != t[i] 呢?

  • 如果字符串长度相同,为了保持一次编辑之差的距离,_所有_后面的字符应该是相同的。为了验证这一点,人们需要比较 s 和 t 的子字符串,它们都从 i + 1 的字符开始。
  • 如果 t 比 s 长一个字符,那么额外的字符 t[i] 应该是这两个字符串之间的唯一区别。为了验证这一点,人们需要比较一个从 s 的 i 字符开始的子字符串和一个从 t 的 i + 1 字符开始的子字符串。

image.png

class Solution {public boolean isOneEditDistance(String s, String t) {int ns = s.length();int nt = t.length();//确保s比t短if(ns > nt){return isOneEditDistance(t,s);}//如果长度差异大于1,则字符串不是一个编辑聚类if(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));}elsereturn s.substring(i).equals(t.substring(i + 1));}}return (ns + 1 == nt);}
}
http://www.lryc.cn/news/261373.html

相关文章:

  • SQL进阶理论篇(八):SQL查询的IO成本
  • 宝塔PostgreSQL设置数据库远程访问
  • 蓝牙协议栈学习笔记
  • XXE利用的工作原理,利用方法及防御的案例讲解
  • jpa 修改信息拦截
  • JavaEE 09 锁策略
  • javacv的视频截图功能
  • Fiddler中AutoResponder的简单使用
  • K8S(一)—安装部署
  • Kubernetes Pod 网段与主机内网网段互通
  • go学习redis的学习与使用
  • 娱乐新拐点:TikTok如何改变我们的日常生活?
  • 【Nginx】Nginx了解(基础)
  • 十九)Stable Diffusion使用教程:ai室内设计案例
  • 虚拟机VMware安装centos以及配置网络
  • call 和 apply:改变对象行为的秘密武器(上)
  • 工作中 docker 的使用积累
  • 初识SpringSecurity
  • 大数据讲课笔记1.4 进程管理
  • 技术点:实现大文件上传
  • 记一次挖矿病毒的溯源
  • day05-报表技术-图形报表
  • 【Spring】@Transactional事务属性详解
  • 通过css3的锚定滚动属性,实现分页加载时让滚动条不闪动
  • 使用Selenium与Scrapy处理动态加载网页内容的解决方法
  • Linux的权限(二)
  • 网络服务IP属地发生变化的原因有哪些?
  • OpenGL 着色器程序的保存和加载(二进制)
  • 【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换
  • 疯狂SQL转换系列- SQL for Tencent Cloud VectorDB