zoukankan      html  css  js  c++  java
  • 【转载】去重判断,比较字符串相似度

    比较的字符串长度。

     #region  比较字符串相似度
            private static int min(int one, int two, int three)
            {
                int min = one;
                if (two < min)
                {
                    min = two;
                }
                if (three < min)
                {
                    min = three;
                }
                return min;
            }
            public static int LD(String str1, String str2)
            {
                int[,] d;     // 矩阵 
                int n = str1.Length;
                int m = str2.Length;
                int i;     // 遍历str1的 
                int j;     // 遍历str2的 
                char ch1;     // str1的 
                char ch2;     // str2的 
                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++)
                {     // 遍历str1 
                    ch1 = str1[i - 1];
                    // 去匹配str2 
                    for (j = 1; j <= m; j++)
                    {
                        ch2 = str2[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];
            }

            //返回两个字符串的相似度,返回一个0到100之间的整数,值越大,表示相似度越高
            public static int similar(String newStr, String targetStr)
            {
                int ld = LD(newStr, targetStr);
                double i = 1 - (double)ld / (double)Math.Max(newStr.Length, targetStr.Length);
                int similar = Convert.ToInt32(Math.Round((Convert.ToDecimal(i)), 2, MidpointRounding.AwayFromZero) * 100);
                return similar;
            }
            #endregion
  • 相关阅读:
    c# 获取iis地址
    c# 导入导出Excel
    ffmpeg 转成MP3采样率8000
    c# 百度api语音识别
    c# 文件转换成base64
    js截取文件的名称
    js checkbox获取选中的值
    js base64位和c# Base64位转换
    笨方法学Python——习题16
    Python学习问题
  • 原文地址:https://www.cnblogs.com/daytoday/p/2642213.html
Copyright © 2011-2022 走看看