zoukankan      html  css  js  c++  java
  • Edit Distance (编辑距离) .NET 实现

        /// <summary>
        /// Calculate Text Edit Distance Utility Class
        /// </summary>
        public static class TextEditDistanceUtility
        {
            /// <summary>
            /// get edit distance between two string
            /// </summary>
            /// <param name="str1"></param>
            /// <param name="str2"></param>
            /// <returns></returns>
            public static int GetEditDistance(string str1, string str2)
            {
                if (str1 == str2) return 0;
                else if (String.IsNullOrEmpty(str1) && String.IsNullOrEmpty(str2)) return 0;
                else if (String.IsNullOrEmpty(str1) && !String.IsNullOrEmpty(str2)) return str2.Length;
                else if (!String.IsNullOrEmpty(str1) && String.IsNullOrEmpty(str2)) return str1.Length;
                int[,] d = new int[str1.Length + 1, str2.Length + 1];
                d.Initialize();
                int cost = 0;
                for (int i = 0; i < d.GetLength(0); i++)
                {
                    d[i, 0] = i;
                }
                for (int j = 0; j < d.GetLength(1); j++)
                {
                    d[0, j] = j;
                }
                for (int i = 0; i < str1.Length; i++)
                {
                    for (int j = 0; j < str2.Length; j++)
                    {
                        if (str1[i] == str2[j]) cost = 0;
                        else cost = 1;
                        d[i + 1, j + 1] = Math.Min(Math.Min(d[i, j + 1] + 1, d[i + 1, j] + 1), Math.Min(d[i + 1, j] + 1, d[i, j] + cost));
                    }
                }
                return d[str1.Length, str2.Length];
            }
        }


    Edit Distance是比较两个字符串之间需要多少次基础操作才能变成对方的操作,增加一个字符,删除一个字符,修改一个字符,均算作一次操作

    比如abb和bbb,编辑距离就是1,abc变成aa,编辑距离就是2

    这个算法比较多的应用就是比较两次结果之间差别有多大

  • 相关阅读:
    English,The Da Vinci Code, Chapter 23
    python,meatobject
    English,The Da Vinci Code, Chapter 22
    English,The Da Vinci Code, Chapter 21
    English,The Da Vinci Code, Chapter 20
    English,The Da Vinci Code, Chapter 19
    python,xml,ELement Tree
    English,The Da Vinci Code, Chapter 18
    English,The Da Vinci Code, Chapter 17
    English,The Da Vinci Code, Chapter 16
  • 原文地址:https://www.cnblogs.com/vanpan/p/3583036.html
Copyright © 2011-2022 走看看