编辑距离算法

news/2024/11/15 2:22:01/

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

插入一个字符
删除一个字符
替换一个字符

示例 1:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')
示例 2:

输入:word1 = "intention", word2 = "execution"
输出:5
解释:
intention -> inention (删除 't')
inention -> enention (将 'i' 替换为 'e')
enention -> exention (将 'n' 替换为 'x')
exention -> exection (将 'n' 替换为 'c')
exection -> execution (插入 'u')
 

提示:

0 <= word1.length, word2.length <= 500
word1 和 word2 由小写英文字母组成

思路:如下图,如果相同就等于左上角的值,不同就等于(左上、上方、左方)的值+1。

左上、上方、左方表示替换删除插入三种状态,对应顺序可以不同。

public class Main {public static void main(String[] args) {// TODO Auto-generated method stubString word_1="horse",word_2="ros";System.out.println(fun(word_1,word_2));    //3}public static int fun(String word_1,String word_2) {int dp[][]=new int[word_1.length()+1][word_2.length()+1];dp[0][0]=0;for(int i=1;i<=word_1.length();i++)dp[i][0]=i;for(int j=1;j<=word_2.length();j++)dp[0][j]=j;for(int i=1;i<=word_1.length();i++) {for(int j=1;j<=word_2.length();j++) {if(word_1.charAt(i-1)==word_2.charAt(j-1))dp[i][j]=dp[i-1][j-1];elsedp[i][j]=Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1]))+1;}}return dp[word_1.length()][word_2.length()];}
}


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

相关文章

设计模式系列/ 职责链模式

必读 本篇主要分析设计模式之 职责链模式。 什么人适合学习本章节呢。 从未接触过设计模式的同学有n年工作经验 && 对职责链模式不了解的同学 1. 职责链模式意识形态 设计模式充斥着我们开发过程中的方方面面&#xff0c;责任链模式也是如此。也许你用到了设计模式&…

JavaEE(系列15) -- 多线程(JUC中常见的类)

JUC----- java.util.concurrent(并发) 1. ReentrantLock 1. 可重入互斥锁. 和 synchronized 定位类似, 都是用来实现互斥效果, 保证线程安全. 2. ReentrantLock 也是可重入锁. "Reentrant" 这个单词的原意就是 "可重入". 1. ReentrantLock 的用法: lock():…

android性能测试-内存详解

Android性能测试-内存详解 名称说明Native HeapNative代码分配的内存&#xff0c;虚拟机和Android框架分配内存。关于什么是Native代码&#xff0c;即非Java代码分配的内存。Dalvik HeapJava对象分配的占据内存Dalvik Other类数据结构和索引占据内存Stack栈内存Other dev内部dr…

mp3格式怎么弄?制作mp3格式文件,教您2个有效的方法!

案例&#xff1a;如何制作mp3格式的文件&#xff1f; 【我想制作自己的mp3文件&#xff0c;但不知道如何开始。有没有小伙伴可以分享一下制作mp3格式的方法&#xff1f;】 MP3是一种非常流行的音频格式&#xff0c;被广泛用于数字音频的存储和传输。制作mp3格式文件可以让您方…

C++多线程绑定CPU

文章目录 Windows多线程windows调度与绑定CPU Windows多线程 windows.h中提供了多线程解决方案&#xff0c;创建多线程的函数为 //返回值&#xff1a;一个HANDLE类型的值&#xff0c;表示线程的句柄&#xff0c;可用于等待线程等函数 HANDLE CreateThread(LPSECURITY_ATTRIBU…

js逆向-阿里系某688参数sign分析

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 前言 目标网站&#xff1a;aHR0cHM6Ly93d3cuMTY4OC5jb20v 接…

微信小程序的基本使用以及安装教程

目录 一、使用微信开发者工具1、第一步先进行安装微信开发者工具2、使用方式安装完成后的使用步骤项目的大概界面 二、注册小程序账号在此处申请AppID&#xff0c;用于微信开发者工具的建立项目使用 三、使用微信官方文档 一、使用微信开发者工具 1、第一步先进行安装微信开发…

域泛化(Domain Generalization)相关知识学习

文章目录 一、域泛化综述1&#xff09;Domain定义2&#xff09;Domain Generalization&#xff08;DG&#xff09;定义3&#xff09;一些相关领域与DG的区别4&#xff09;领域泛化的方法表示学习领域不变表示学习①基于核的方法&#xff08; kernel-based methods&#xff09;②…