Java中计算字符串相似度可以使用编辑距离算法,也称为Levenshtein距离。

Levenshtein距离定义为将一个字符串转换为另一个字符串所需的最小编辑距离,即插入、删除、替换字符的次数。

Java中可以使用以下代码实现:

public static int levenshteinDistance(String s1, String s2) {
    int m = s1.length();
    int n = s2.length();
    int[][] dp = new int[m + 1][n + 1];
    for (int i = 0; i <= m; i++) {
        dp[i][0] = i;
    }
    for (int j = 0; j <= n; j++) {
        dp[0][j] = j;
    }
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            int cost = s1.charAt(i - 1) == s2.charAt(j - 1) ? 0 : 1;
            dp[i][j] = Math.min(Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1), dp[i - 1][j - 1] + cost);
        }
    }
    return dp[m][n];
}

这段代码使用动态规划的方式计算编辑距离。时间复杂度为O(mn),其中m和n分别为两个字符串的长度。

计算出编辑距离后,可以使用以下公式计算字符串相似度:

public static double similarity(String s1, String s2) {
    int distance = levenshteinDistance(s1, s2);
    return 1 - (double) distance / Math.max(s1.length(), s2.length());
}

这段代码将编辑距离转换为相似度,相似度的取值范围为0到1之间。相似度越接近1,表示两个字符串越相似。

Java中计算字符串相似度

原文地址: https://www.cveoy.top/t/topic/EeT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录