"编辑距离" 在输入检测中的应用

        在office中输错了单词,office会在单词下方用红色波浪线标出来,你右击它,在菜单中会提示正确的单词拼法;在翻译词典中输入单词时拼错了某个字母,词典会智能的提示你可能想输入的单词。

        其实这里用到的是"编辑距离"的概念,根据维基百科的解释,编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。以begin为例,将它编辑为been,其中一种方案的步骤如下:1.删除g; 2.将i变为e。由于该方案经过了两次编辑操作,因此编辑距离就为2。编辑距离问题就是研究将一个字符串转成另一个字符串需要的最少操作次数。

算法实现

        实现计算编辑距离的算法,主要是采用动态规划的思想。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static int GetDistance(string a, string b)
{
    char[] arr1 = a.ToCharArray();
    char[] arr2 = b.ToCharArray();
 
    int[,] D = new int[arr1.Length + 1, arr2.Length + 1];
    for (int i = 0; i <= arr1.Length; i++)
    {
        D[i, 0] = i;
    }
    for (int j = 0; j <= arr2.Length; j++)
    {
        D[0, j] = j;
    }
 
    for (int i = 1; i <= arr1.Length; i++)
    {
        for (int j = 1; j <= arr2.Length; j++)
        {
            D[i, j] = new int[]{
                D[i-1,j-1]+(arr1[i-1]==arr2[j-1]?0:1),
                D[i-1,j]+1,
                D[i,j-1]+1
            }.Min();
        }
    }
    return D[arr1.Length, arr2.Length];
}

算法应用

        到网上找一个英语词典的数据库,就可以实现错误检测的功能。用户输入一个单词后,当数据库中没有查找到该单词,则将编辑距离为1的单词显示给用户,供用户选择。

        当用户输入了正确的单词,则显示该单词的解释。

posted @   Create Chen  阅读(1983)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示