源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java字符串相似度算法

  • 时间:2020-12-26 11:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java字符串相似度算法
本文实例讲述了java字符串相似度算法。分享给大家供大家参考。具体实现方法如下:
[u]复制代码[/u] 代码如下:
public class Levenshtein {     private int compare(String str, String target) {         int d[][]; // 矩阵         int n = str.length();         int m = target.length();         int i; // 遍历str的         int j; // 遍历target的         char ch1; // str的         char ch2; // target的         int temp; // 记录相同字符,在某个矩阵位置值的增量,不是0就是1                 if (n == 0) {             return m;         }                 if (m == 0) {             return n;         }                 d = new int[n + 1][m + 1];                 for (i = 0; i <= n; i++) { // 初始化第一列             d[i][0] = i;         }                 for (j = 0; j <= m; j++) { // 初始化第一行             d[0][j] = j;         }                 for (i = 1; i <= n; i++) { // 遍历str             ch1 = str.charAt(i - 1);             // 去匹配target             for (j = 1; j <= m; j++) {                 ch2 = target.charAt(j - 1);                 if (ch1 == ch2) {                     temp = 0;                 } else {                     temp = 1;                 }                                 // 左边+1,上边+1, 左上角+temp取最小                 d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);             }         }                 return d[n][m];     }         private int min(int one, int two, int three) {         return (one = one < two ? one : two) < three ? one : three;     }         /**      * 获取两字符串的相似度      *      * @param str      * @param target      *      * @return      */         public float getSimilarityRatio(String str, String target) {         return 1 - (float) compare(str, target) / Math.max(str.length(), target.length());             }         public static void main(String[] args) {         Levenshtein lt = new Levenshtein();         String str = "ab";         String target = "ac";         System.out.println("similarityRatio=" + lt.getSimilarityRatio(str, target));     } }
希望本文所述对大家的Java程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部