C# 实现字符串相似度计算(Levenshtein 算法)

简介: 介绍计算字符串编辑距离的算法,基于Levenshtein距离实现相似度分析,适用于搜索建议与拼写纠错,附C#代码示例。

计算两个字符串的编辑距离,判断相似度,常用于搜索建议、拼写纠错。

public class StringSimilarity
{
    // 计算Levenshtein编辑距离
    public static int CalculateLevenshteinDistance(string s1, string s2)
    {
        int[,] dp = new int[s1.Length + 1, s2.Length + 1];
        // 初始化边界
        for (int i = 0; i <= s1.Length; i++) dp[i, 0] = i;
        for (int j = 0; j <= s2.Length; j++) dp[0, j] = j;
        // 动态规划计算
        for (int i = 1; i <= s1.Length; i++)
        {
            for (int j = 1; j <= s2.Length; j++)
            {
                int cost = s1[i - 1] == s2[j - 1] ? 0 : 1;
                dp[i, j] = Math.Min(Math.Min(dp[i - 1, j] + 1, dp[i, j - 1] + 1), dp[i - 1, j - 1] + cost);
            }
        }
        return dp[s1.Length, s2.Length];
    }
    // 计算相似度(0-100%)
    public static double CalculateSimilarity(string s1, string s2)
    {
        if (string.IsNullOrEmpty(s1) && string.IsNullOrEmpty(s2)) return 100;
        if (string.IsNullOrEmpty(s1) || string.IsNullOrEmpty(s2)) return 0;
        int distance = CalculateLevenshteinDistance(s1, s2);
        int maxLength = Math.Max(s1.Length, s2.Length);
        return (1 - (double)distance / maxLength) * 100;
    }
    // 调用示例
    public static void TestSimilarity()
    {
        string s1 = "C#编程教程";
        string s2 = "C#程序设计";
        double similarity = CalculateSimilarity(s1, s2);
        Console.WriteLine($"相似度: {similarity:F2}%");
    }
}
相关文章
|
7月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
7月前
|
数据采集 数据可视化 安全
RFID智能货架实施仓库可视化管理
RFID智能货架通过无线射频技术实现货物自动识别与批量盘点,支持非接触、远距离、穿透式数据采集,提升仓储效率与准确性。实现实时库存可视化、智能出入库、动态盘点与预警管理,助力仓储物流迈向自动化、智慧化。
|
7月前
|
Web App开发 数据采集 存储
使用 Selenium 爬取京东手机销量与评分数据
使用 Selenium 爬取京东手机销量与评分数据
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
37_开源LLM:LLaMA与Mistral的突破_深度解析
在人工智能领域,2025年已经成为开源大语言模型的黄金时代。从Meta的LLaMA系列到欧洲初创公司Mistral AI的创新突破,开源LLM正在重塑整个AI生态系统的格局。截至2025年4月,Meta的LLaMA系列已成为全球下载量最高、社区使用最活跃的开源大语言模型之一,并被集成于数百个学术项目、创业平台和AI产品之中
994 1
|
自然语言处理 算法 搜索推荐
字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。
1405 1
|
开发框架 .NET API
实现数据同步的webapi接口
【10月更文挑战第10天】本文介绍了一个在ASP.NET Core中使用C#实现数据同步的Web API接口示例。首先定义了用户数据模型和Entity Framework Core数据库上下文,然后创建了一个控制器来处理客户端的数据同步请求:通过清空现有数据并添加新数据实现同步。注意实际应用需考虑更多细节如错误处理等。
546 3
|
XML 运维 JavaScript
winsw 是什么工具
【6月更文挑战第9天】winsw 是什么工具
2567 6
|
应用服务中间件 nginx Windows
[emerg] 15060#200: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket ......
[emerg] 15060#200: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket ......
737 0
|
Go Windows
win10 golang下载安装,及环境变量配置
鄙人之前是使用mac做golang开发的,后来换了台图形工作站,用了windows的系统,因此只得从头下载golang安装,及进行环境变量的配置。比较方便的一点是,之前在mac osx上码的golang代码不用再敲上一遍了,因为golang可以跨平台运行,可以直接从mac上的golang代码复制到windows系统上即可。
412 1
|
算法 C# 数据安全/隐私保护
C# | AES加解密 - 快速上手
这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一 。 AES作为计算机领域最常见的通用加密算法之一,称之为对称加密算法中的一哥也丝毫不为过,其重要程度不言而喻。 本文将极尽详细的讲解C#实现AES加密和解密的全过程。
1378 0
C# | AES加解密 - 快速上手