需求:计算两个String 字符串的相似度,返回相似度百分比
/**
* 两个字符串的相似度
* @param s1
* @param s2
* @return
*/
public static double similarity(String s1, String s2) {
int len1 = s1.length();
int len2 = s2.length();
int[][] dp = new int[len1 + 1][len2 + 1];
for (int i = 0; i <= len1; i++) {
for (int j = 0; j <= len2; j++) {
if (i == 0 || j == 0) {
dp[i][j] = 0;
} else if (s1.charAt(i - 1) == s2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
int lcs = dp[len1][len2];
double similarity = (double) lcs / Math.max(len1, len2);
return similarity;
}