C#计算2个字符串的相似度

 更新时间:2017年06月03日 16:55:34   作者:冰封一夏  
这篇文章主要为大家详细介绍了C#计算2个字符串相似度的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

计算字符串相似度,直接来C#代码

 public static float levenshtein(string str1, string str2)
  {
   //计算两个字符串的长度。 
   int len1 = str1.Length;
   int len2 = str2.Length;
   //建立上面说的数组,比字符长度大一个空间 
   int[,] dif = new int[len1 + 1, len2 + 1];
   //赋初值,步骤B。 
   for (int a = 0; a <= len1; a++)
   {
    dif[a, 0] = a;
   }
   for (int a = 0; a <= len2; a++)
   {
    dif[0, a] = a;
   }
   //计算两个字符是否一样,计算左上的值 
   int temp;
   for (int i = 1; i <= len1; i++)
   {
    for (int j = 1; j <= len2; j++)
    {
     if (str1[i - 1] == str2[j - 1])
     {
      temp = 0;
     }
     else
     {
      temp = 1;
     }
     //取三个值中最小的 
     dif[i, j] = Math.Min(Math.Min(dif[i - 1, j - 1] + temp, dif[i, j - 1] + 1), dif[i - 1, j] + 1);
    }
   }
   Console.WriteLine("字符串\"" + str1 + "\"与\"" + str2 + "\"的比较");

   //取数组右下角的值,同样不同位置代表不同字符串的比较 
   Console.WriteLine("差异步骤:" + dif[len1, len2]);
   //计算相似度 
   float similarity = 1 - (float)dif[len1, len2] / Math.Max(str1.Length, str2.Length);
   Console.WriteLine("相似度:" + similarity);
   return similarity;
  }

返回结果就是相似度了,验证码识别上用的到

爱给模板网提供

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C# 邮件发送和接收实现代码

    C# 邮件发送和接收实现代码

    这两个方法很容易理解,只实现了最基本的功能,如果需要可以查看源代码获取更多信息。
    2009-07-07
  • 解析C# Console 控制台为什么也会卡死(原因分析)

    解析C# Console 控制台为什么也会卡死(原因分析)

    在分析旅程中,总会有几例控制台的意外卡死导致的生产事故,有经验的朋友都知道,控制台卡死一般是动了快速编辑窗口的缘故,虽然知道缘由,但一直没有时间探究底层原理,市面上也没有对这块的底层原理介绍,昨天花了点时间简单探究了下,感兴趣的朋友一起看看吧
    2023-10-10
  • 详解C#数据类型及其转换

    详解C#数据类型及其转换

    这篇文章主要介绍了C#数据类型及其转换详解,在C#中,数据类型可以分为几种类型,今天小编通过本文给大家详细介绍,需要的朋友可以参考下
    2020-07-07
  • C#实现查杀本地与远程进程的方法

    C#实现查杀本地与远程进程的方法

    这篇文章主要介绍了C#实现查杀本地与远程进程的方法,可实现针对特定进程的关闭操作,是C#进程操作的一个典型应用,需要的朋友可以参考下
    2014-12-12
  • c# 解决IIS写Excel的权限问题

    c# 解决IIS写Excel的权限问题

    使用以上方法必须对dcom进行配置,给用户使用office的权限
    2012-10-10
  • Js中的substring,substr与C#中的Substring比较

    Js中的substring,substr与C#中的Substring比较

    本篇文章主要是对Js中的substring,substr与C#中的Substring进行了比较。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • .NET Core开发之配置详解

    .NET Core开发之配置详解

    这篇文章给大家分享了.NET Core开发中相关配置的知识点内容,有需要的朋友们可以参考下。
    2018-08-08
  • C#中的虚方法和抽象方法的运用

    C#中的虚方法和抽象方法的运用

    这篇文章主要介绍了C#中的虚方法和抽象方法的运用,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)

    C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)

    本文主要介绍了C#基于NAudio工具对Wav音频文件进行剪切,可以将一个音频文件剪切成多个音频文件(限PCM格式),感兴趣的小伙伴可以学习一下
    2021-11-11
  • c#语言程序构建基块

    c#语言程序构建基块

    这篇文章主要介绍了c#语言程序构建基块,关于c#程序构建基块我们要从成员开始,class 的成员要么是静态成员,要么是实例成员。 静态成员属于类,而实例成员则属于对象,具体内容需要的小伙伴可以参考下面文章的详细内容
    2021-12-12

最新评论