博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
71.Edit Distance(编辑距离)
阅读量:5271 次
发布时间:2019-06-14

本文共 1473 字,大约阅读时间需要 4 分钟。

Level:

  Hard

题目描述:

Given two words word1 and word2, find the minimum number of operations required to convert word1 to word2.

You have the following 3 operations permitted on a word:

  1. Insert a character
  2. Delete a character
  3. Replace a character

Example 1:

Input: word1 = "horse", word2 = "ros"Output: 3Explanation: horse -> rorse (replace 'h' with 'r')rorse -> rose (remove 'r')rose -> ros (remove 'e')

Example 2:

Input: word1 = "intention", word2 = "execution"Output: 5Explanation: intention -> inention (remove 't')inention -> enention (replace 'i' with 'e')enention -> exention (replace 'n' with 'x')exention -> exection (replace 'n' with 'c')exection -> execution (insert 'u')

思路分析:

  动态规划的思想,dp[i] [j]代表将word1前i个字符转换成word2前j个字符所需要的操作次数。

  如果word1[i]==word2[j],那么dp[i] [j]=dp[i-1] [j-1]。

  如果word1[i]不等于word2[j],需要找出插入元素,删除元素,替换元素中最小的操作,然后加一。

  dp[i] [j-1]表示word1前i个可以表示word2前j-1个,那么要表示前j个,只能执行插入操作。

  dp[i-1] [j]表示word1前i-1个可以表示word2前j个,那么要前i个表示前j个,只能执行删除操作。

  dp[i-1] [j-1]表示word1前i-1个可以表示word2前j-1个,那么要前i个表示前j个,只能执行替换操作。

  则dp[i] [j]=min(dp[i-1] [j],dp[i] [j],dp[i-1] [j-1])+1;

代码:

public class Solution{    public int minDistance(String word1,String word2){        int m=word1.length();        int n=word2.length();        int [][]dp=new int [m+1][n+1];        for(int i=0;i<=m;i++){            dp[i][0]=i; //单纯的删除操作        }        for(int i=0;i<=n;i++){            dp[0][i]=i; //单纯的插入操作        }        for(int i=0;i

转载于:https://www.cnblogs.com/yjxyy/p/11098060.html

你可能感兴趣的文章
2019-2020-1 1823《程序设计与数据结构》第一周作业总结
查看>>
2019-2020-1 1823《程序设计与数据结构》第二、三周作业总结
查看>>
git命令学习4
查看>>
MYSQL数据库学习
查看>>
MySQL常用命令
查看>>
mysql数据处理函数和分组函数
查看>>
centos MySQL服务启动及开机启动
查看>>
centos 安装anaconda
查看>>
CentOS5安装Git
查看>>
git命令学习1
查看>>
git命令学习2
查看>>
git命令学习3
查看>>
git命令学习5
查看>>
linux 常用命令集锦
查看>>
spring boot 学习笔记(三)之 配置
查看>>
linux 下安装 jre
查看>>
Git 学习笔记之(三)将本地工程导入到GitHub 仓库中
查看>>
centos 服务器 发开防火墙端口
查看>>
maraidb忘记数据密码
查看>>
maven 常见命令 学习笔记(一)之 -pl -am -amd
查看>>