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