1 问题描述

给定一个源串和目标串,能够进行如下操作:

在任意位置上插入一个字符;

替换掉任意字符;

删除任意字符。

写一个程序,实现返回最小操作次数,使得对源串进行上述这些操作后等于目标串。

2 解决方案

此处采用动态规划法,可以较大的提高时间效率。

package com.liuzhen.practice;

public class Main {

    public void getResult(String A, String B) {
if(A.equals(B)) {
System.out.println(0);
return;
}
//dp[i][j]表示源串A位置i到目标串B位置j处最低需要操作的次数
int[][] dp = new int[A.length() + 1][B.length() + 1];
for(int i = 1;i <= A.length();i++)
dp[i][0] = i;
for(int j = 1;j <= B.length();j++)
dp[0][j] = j;
for(int i = 1;i <= A.length();i++) {
for(int j = 1;j <= B.length();j++) {
if(A.charAt(i - 1) == B.charAt(j - 1))
dp[i][j] = dp[i - 1][j - 1];
else {
dp[i][j] = Math.min(dp[i - 1][j] + 1,
Math.min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1));
}
}
}
System.out.println(dp[A.length()][B.length()]);
return;
} public static void main(String[] args) {
Main test = new Main();
String A = "ALGORITHM";
String B = "ALTRUISTIC";
test.getResult(A, B);
}
}

运行结果:

6

最新文章

  1. web开发中常用的技术体系
  2. [UWP]涨姿势UWP源码——极简的RSS阅读器
  3. FIREFOX A tool for easily making HTTP requests (GET/PUT/POST/DELETE)
  4. c# mvc使用 npoi下载 excel
  5. VSS错误自动修复
  6. [原创]java WEB学习笔记64:Struts2学习之路--主题
  7. 20141014--判断语句switch case
  8. FRM-40401 No changes to save error
  9. repeater 分页显示数据
  10. 启动两个tomcat
  11. Java之集合类
  12. [C++程序设计]函数的递归调用
  13. Python3.2官方文档翻译--实例对象和方法对象
  14. Quartus16.0如何使用TCL脚本
  15. 如何将sqlserver的windows验证模式改为SQL Server 和 Windows 混合身份验证模式
  16. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
  17. XML与HTML的作用不同
  18. JS调用本地设备
  19. Python - 利用flask搭建一个共享服务器
  20. poj2774

热门文章

  1. 使用JDBC操作MySQL
  2. 2018-06-20 js字符串函数
  3. OGG应用进程abend报错无法insert虚拟列
  4. MySQL 选错索引的原因?
  5. C# DataTable转为TXT文档
  6. 接触Ubuntu的第一周大致总结
  7. 新概念英语三 新东方主讲Lesson1
  8. Aizu - 2224
  9. UVALive5846
  10. 【Java_Eclipse】Eclipse插件如何卸载?