OJ-----计算字符串的距离

本文介绍了一种衡量两个字符串相似度的算法——编辑距离(Levenshtein Distance)。该算法通过计算从一个字符串转换到另一个字符串所需的最小编辑操作次数来确定两者间的相似度。文章提供了计算编辑距离的具体实现,并附带了示例输入输出,帮助读者更好地理解算法的工作原理。

描述

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。

Ex:

字符串A:abcdefg

字符串B: abcdef

通过增加或是删掉字符”g”的方式达到目的。这两种方案都需要一次操作。把这个操作所需要的次数定义为两个字符串的距离。

要求:

给定任意两个字符串,写出一个算法计算它们的编辑距离。

 

请实现如下接口

/* 功能:计算两个字符串的距离

 * 输入:字符串A和字符串B

 * 输出:无

 * 返回:如果成功计算出字符串的距离,否则返回-1

 */

    public static int calStringDistance (String charA, String  charB)

    {

       return 0;

    } 

 

知识点字符串
运行时间限制10M
内存限制128
输入

输入两个字符串

输出

得到计算结果

样例输入abcdefg abcdef
样例输出1


思路:可以考虑两个字符串的最大匹配长度;

import java.util.*;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s1=sc.next();
String s2=sc.next();
System.out.println(match(s1,s2));
}
sc.close();}
private static int match(String s1,String s2){
int len=s1.length()>s2.length()?s1.length():s2.length();
    int ik=0;int jk=0;int sum=0;
    
for(int i=ik;i<s1.length();i++){
for(int j=jk;j<s2.length();j++){
if(s1.charAt(i)==s2.charAt(j)){
sum++;
ik=i+1;jk=j+1;
break;

}
}

}
return len-sum;
} 


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值