java--动态规划--编辑距离问题
2014-11-09 17:50
246 查看
编辑距离就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目。
两个字符串之间的编辑距离等于使一个字符串变成另外一个字符串而进行的(1)插入、(2)删除、(3)替换
java代码实现:
package ceshi;
public class EditDistance {
public static void main(String[] args) {
String s = "abcdefgehig";
String t = "abdngjfmageajfl";
System.out.println(getDistance(s,t));
}
public static int getDistance(String s,String t){
int cost = 0;
int n = s.length();
int m = t.length();
int[][] d = new int[n+1][m+1];
if(n==0){return m;}
if(m==0){return n;}
for(int i=0;i<=n;i++){
d[i][0] = i;
}
for(int j=0;j<=m;j++){
d[0][j] = j;
}
for(int i=1;i<=n;i++){
int s_i = s.charAt(i-1);
for(int j=1;j<=m;j++){
int t_j = t.charAt(j-1);
if(s_i==t_j){
cost=0;
}else{
cost=1;
}
d[i][j]=min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost);
}
}
return d
[m];
}
public static int min(int a,int b,int c){
int m;
m = a;
if(b<m){m=b;}
if(c<m){m=c;}
return m;
}
}
两个字符串之间的编辑距离等于使一个字符串变成另外一个字符串而进行的(1)插入、(2)删除、(3)替换
java代码实现:
package ceshi;
public class EditDistance {
public static void main(String[] args) {
String s = "abcdefgehig";
String t = "abdngjfmageajfl";
System.out.println(getDistance(s,t));
}
public static int getDistance(String s,String t){
int cost = 0;
int n = s.length();
int m = t.length();
int[][] d = new int[n+1][m+1];
if(n==0){return m;}
if(m==0){return n;}
for(int i=0;i<=n;i++){
d[i][0] = i;
}
for(int j=0;j<=m;j++){
d[0][j] = j;
}
for(int i=1;i<=n;i++){
int s_i = s.charAt(i-1);
for(int j=1;j<=m;j++){
int t_j = t.charAt(j-1);
if(s_i==t_j){
cost=0;
}else{
cost=1;
}
d[i][j]=min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost);
}
}
return d
[m];
}
public static int min(int a,int b,int c){
int m;
m = a;
if(b<m){m=b;}
if(c<m){m=c;}
return m;
}
}
相关文章推荐
- 【动态规划】字符串最小编辑距离Java实现
- 动态规划求解编辑距离问题(转)
- 算法_动态规划_编辑距离问题
- 编辑距离问题——动态规划
- Java动态规划之编辑距离问题示例代码
- 动态规划求解编辑距离问题
- 动态规划求解编辑距离问题
- [动态规划]背包问题(找零/子集和/编辑距离)
- 动态规划求解编辑距离问题
- 算法:编辑距离问题(动态规划)
- 51nod 编辑距离问题(动态规划)
- Java语言描述:动态规划法之编辑距离问题
- 动态规划求解编辑距离问题
- 【动态规划】序列连配问题:编辑距离
- 【dp】编辑距离问题
- 动态规划-编辑距离问题
- 动态规划求编辑距离 - 残阳似血的博客
- 圆周率,孪生素数,反转串,最近距离,基因牛,迷宫问题(2011年蓝桥杯预赛java本科组试题)
- 动态规划-最长公共子串问题-java版
- Java动态规划求解最长公共子串问题