72. 编辑距离(leetcode)

news/2024/9/17 18:03:21/文章来源:https://www.cnblogs.com/lxl-233/p/18407340

https://leetcode.cn/problems/edit-distance/

class Solution {public int minDistance(String word1, String word2) {// 经典题编辑距离// f[i][j]表示word1前i个字符中选择进行操作,word2前j个字符进行选择进行操作相同的最少步数// 以word1[i],word2[j]是否相同划分子集// 相同则不需要考虑word1[i],word2[j],考虑对之前的字符进行操作// 不同则考虑三个操作,增,删,改,增是加一个字符使得相同,删是删一个字符相同,改是改一个字符使得相同// 这里有个难点:增和删对于word1和word2都是等价的,目的都是使两个字符串相等,增word1等价删word2,增word2等价删word1// 因此可以看做只有删word1,删word2,改word1,删word1,则考虑前i-1个元素,删word2则考虑前j-1个元素// 改一定会相等,因此考虑i-1,j-1个元素// 有min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1// f[i][j] = if(word1[i]==word2[j]) f[i-1][j-1]//           else f[i][j]=min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1// 根据定义有f[1~n][0]=1~n,f[0][1~n]=1~nint[][] f=new int[510][510];for(int i=1;i<=word1.length();i++)f[i][0]=i;for(int i=1;i<=word2.length();i++)f[0][i]=i;for(int i=1;i<=word1.length();i++)for(int j=1;j<=word2.length();j++){if(word1.charAt(i-1)==word2.charAt(j-1))f[i][j]=f[i-1][j-1];else f[i][j]=Math.min(f[i-1][j],Math.min(f[i][j-1],f[i-1][j-1]))+1;}return f[word1.length()][word2.length()];}
}

 

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

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

相关文章

第四周作业

1、安装burp并实现抓取HTTP站点的数据包(HTTPS站点暂时不要求) 下方练习已完成 2、练习Tomcat PUT方法任意写文件漏洞(CVE-2017-12615),提供蚁剑连接成功截图 # 搜索镜像 docker search cve-2017-12615 # 拉取镜像 docker pull cved/cve-2017-12615 # 查看该镜像的详细信息…

MIT6.824 课程-Raft

Fault Tolerance - Raft 容错模式 我们已经学习了以下几种容错模式(fault-tolerance pattern):计算冗余:MapReduce,但是所有计算由单点 Master 进行调度。 数据冗余:GFS,也是依赖单点 Master 来对多个副本进行选主。 服务冗余:VMware-FT 依赖单个 TestAndSet 操作可以看…

9/10论文学习笔记

1.CPLEX是什么? 2.an apparent-tardiness-cost-with-setup (ATCS)是什么? a basic simulated annealing (SA)基本模拟退火算法 the threshold-accepting (TA) method 阈值接收算法

[Embodied AI Tutorial] The Basic Frameworks and Techniques for Embodied AI (Part2)

目录Embodied AI Tutorial课程内容Modeling and approaches for Embodied AIWorld ModelGet a Good PolicyPlanning And ControlSimulation technology for Embodied AIRigid body simulationCamera simulationAsserts相关链接资料查询 Embodied AI Tutorial 课程主页: slides…

MIT6.824 课程-GFS

GFS原文:https://zhuanlan.zhihu.com/p/113161014 搬运用于参考学习概述 存储(Storage)是一个非常关键的抽象,用途广泛。 GFS 论文还提到了很多关于容错、备份和一致性的问题。 GFS 本身是 Google 内部一个很成功的实用系统,其关键点被很好的组织到一块发表成为了学术论文…

MIT6.824 课程-MapReduce

MapReduce:在大型集群上简化数据处理 概要 MapReduce是一种编程模型,它是一种用于处理和生成大型数据集的实现。用户通过指定一个用来处理键值对(Key/Value)的map函数来生成一个中间键值对集合。然后,再指定一个reduce函数, 它用来合并所有的具有相同中间key的中间value 。…

[Java并发]线程安全的List

线程安全的List 目前比较常用的构建线程安全的List有三种方法:使用Vector容器 使用Collections的静态方法synchronizedList(List< T> list) 采用CopyOnWriteArrayList容器使用Vector容器 Vector类实现了可扩展的对象数组,并且它是线程安全的。它和ArrayList在常用方法的…

章10——面向对象编程(高级部分)——内部类

重点掌握匿名内部类的使用! 1、内部类可以随意访问外部类的成员,包括私有的属性,而外部类不可以。 2、内外部类有重名属性时,内部类的访问采用就近原则,如想访问外部的成员,则用外部类名.this.属性名。内部类分类,四种局部内部类第七条解释:Outer02.this本质是一个外部…

【整理】虚拟地址全解析:操作系统内存管理与进程调度的深度揭秘!

原创 freedom47概述 在现代计算机系统中,虚拟地址是内存管理的关键组成部分。 虚拟地址不仅帮助操作系统高效地管理物理内存,还在进程的内存分配中发挥重要作用。 本文将详细介绍虚拟地址的定义、作用、操作系统的内存管理、进程内存分配、32 位与 64 位架构的内存分配差异,…

2024.9.10 搜索引擎+字体

今天是人工智能的第一节课!我们主要学了引擎的搜索以及字体两部分,干货满满!有一种走了20年弯路的感觉(⊙︿⊙)第一次拥有了博客账号,在我小学的时候我妈妈会用博客记录生活,对于博客有一种熟悉的陌生感hhha 【知识小课堂1】 搜索引擎分为两类: 一、目录式分类搜索引擎,…

The Teachers Day gift a future teacher wants

`#include include void printBanner(); void printHeart(); void printFlower(); int main() { std::cout << "\n"; printBanner(); std::cout << std::endl; printFlower(); std::cout << std::endl; printHeart();return 0;}`点击查看代码 vo…