经典算法求字符串的编辑距离
来源:互联网 发布:淘宝网钢琴防潮管 编辑:程序博客网 时间:2024/05/01 19:16
编辑距离定义
通过插入删除或替换使得一个字符串变为另一个字符串的最小操作次数。
DP思路
设有字符串a和字符串ba[m]表示第一个字符串,m表示该字符串字符的下标为0~mb[n]表示第二个字符串,n表示该字符串字符的下标为0~nd[i][j]表示子串a[i]和子串a[j]的最小编辑距离那么边界条件:d[i][0]=i, 0=<i<=md[0][j]=j, 0=<j<=n状态转移方程:if(a[i-1]等于b[j-1]) d[i][j]=d[i-1][j-1]else d[i][j] = min{d[i-1][j]+1,d[i][j-1]+1}d[i-1][j]+1:代表a(0,i-1)变成b(0,j)时,a需减去多余的1个字符转到a(0,i-1),所以操作数+1d[i][j-1]+1:代表a(0,i)变成b(0,j-1)时,a加上1个字符匹配到b(0,j),所以操作数+1d[i-1][j-1]+1:代表将a的最后字符转成b的最后字符,所以操作+1
public static void main(String[] args) { System.out.println(sditDistance("sailn", "failing")); System.out.println(sditDistance("Louis", "Loisu")); System.out.println(sditDistance("recoginze", "recognize")); } public static int sditDistance(String s1, String s2) { final int m = s1.length(); final int n = s2.length(); int[][] d = new int[m + 1][n + 1]; for (int j = 0; j <= n; ++j) { d[0][j] = j; } for (int i = 0; i <= m; ++i) { d[i][0] = i; }// for (int[] l : d) {// System.out.println(Arrays.toString(l));// } for (int i = 1; i <= m; ++i) { char ci = s1.charAt(i - 1); for (int j = 1; j <= n; ++j) { char cj = s2.charAt(j - 1); if (ci == cj) { d[i][j] = d[i - 1][j - 1]; } else { // 等号右边的分别代表 将ci改成cj 错串加cj 错串删ci d[i][j] = Math.min(d[i - 1][j - 1] + 1, Math.min(d[i][j - 1] + 1, d[i - 1][j] + 1)); } } }// System.out.println();// for (int[] l : d) {// System.out.println(Arrays.toString(l));// } return d[m][n]; }
0 0
- 经典算法求字符串的编辑距离
- 求字符串编辑距离
- 求字符串编辑距离
- DP求两个字符串的编辑距离
- DP求两个字符串的编辑距离
- 求两个字符串的编辑距离
- 求两个字符串的编辑距离
- 求两个字符串的编辑距离
- 字符串的编辑距离和编辑距离算法
- 字符串编辑距离算法
- 【算法】字符串编辑距离
- 经典算法 | 字符串最小编辑距离分析与证明
- 使用最小编辑距离算法求字符串相似度
- 求两字符串的距离的算法
- 字符串的编辑距离
- 字符串的编辑距离
- 字符串的编辑距离
- 字符串的编辑距离
- hdu2874—Connections between cities(LCA)
- SSH(Struts2+Spring4+Hibernate5)示例
- 通过中序遍历、后序遍历求先序遍历
- CTA策略:主力连续、全合约模式下回测结果的差异探讨
- Vue H5 History 部署IIS上404问题
- 经典算法求字符串的编辑距离
- 实用站点收集——持续更新
- 查询条件样式的PopWindow
- Spark2.1.0文档:Spark Streaming 编程指南(上)
- 与64位版本的Windows不兼容,masm运行不了
- effective C++ 使用条款(一)——item1~item33总结
- 64位Ubuntu14.04系统下加载内核模块hello world
- Markdown 搬运整理
- HTML标签元素分类(HTML基础知识)