美文网首页
编辑距离

编辑距离

作者: 月影追猎者 | 来源:发表于2019-12-19 16:50 被阅读0次

参考文章 https://www.jianshu.com/p/8e0204dbb765

编辑距离是针对两个字符串的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。编辑距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的编辑距离,判断哪一个(或哪几个)是比较可能的字。
莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
俄罗斯科学家弗拉基米尔·莱文斯坦在1965年提出这个概念。

算法实现:动态规划。动态规划通常基于一个递推公式及一个或多个初始状态,将当前子问题的解由上一子问题的解推出。

Java实现

import java.util.Scanner;

public class LevenshteinDistance {
    /**
     * 从3个数中选出最小值
     */
    private static int minOfTreeNum(int a, int b, int c) {
        int minNum = a;
        if (minNum > b) {
            minNum = b;
        }
        if (minNum > c) {
            minNum = c;
        }
        return minNum;
    }

    public static void main(String[] args) {
        String x = new Scanner(System.in).nextLine();
        String y = new Scanner(System.in).nextLine();
        // 声明一个二维数组存放编辑距离
        int[][] levenST = new int[x.length() + 1][y.length() + 1];
        // 初始化二维数组,即写入最简单情形的levenshtein距离
        for (int i = 0; i <= x.length(); i++) {
            levenST[i][0] = i;
        }
        for (int j = 0; j <= y.length(); j++) {
            levenST[0][j] = j;
        }
        // 将字符串x与y中的字母两两比较,得到相应字符串的编辑距离
        for (int i = 1; i <= x.length(); i++) {
            for (int j = 1; j <= y.length(); j++) {
                levenST[i][j] = minOfTreeNum(levenST[i - 1][j] + 1, levenST[i][j - 1] + 1, levenST[i - 1][j - 1] + (x.charAt(i - 1) != y.charAt(j - 1) ? 1 : 0));
            }
        }
        System.out.println("Levenshtein Distance: " + levenST[x.length()][y.length()]);
    }
}

相关文章

  • 编辑距离及编辑距离算法

    无意间看到了有人问编辑距离算法,当时对这个概念很陌生,也就去学习了下,做下总结,记录下,好记性不如烂笔头。 编辑距...

  • 编辑距离

    https://leetcode-cn.com/problems/edit-distance/descriptio...

  • 编辑距离

    编辑距离

  • 编辑距离

    Levenshteinhttp://www.coli.uni-saarland.de/courses/LT1/20...

  • 编辑距离

    算法基本步骤: (1)构造 行数为m+1 列数为 n+1 的矩阵 , 用来保存完成某个转换需要执行的操作的次数,将...

  • 编辑距离

    题目: 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法...

  • 编辑距离

    为什么不同操作就是对应与d的左移上移或左上移?这个问题递归角度较易理解。DP角度,d记录的是目前最小编辑距离。左、...

  • 编辑距离

    讲解得不错

  • 编辑距离

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/edit...

  • 编辑距离

    参考文章 https://www.jianshu.com/p/8e0204dbb765 编辑距离是针对两个字符串的...

网友评论

      本文标题:编辑距离

      本文链接:https://www.haomeiwen.com/subject/cxlsnctx.html