Class LongestCommonSubsequenceDistance

  • All Implemented Interfaces:
    java.util.function.BiFunction<java.lang.CharSequence,​java.lang.CharSequence,​java.lang.Integer>, EditDistance<java.lang.Integer>, ObjectSimilarityScore<java.lang.CharSequence,​java.lang.Integer>, SimilarityScore<java.lang.Integer>

    public class LongestCommonSubsequenceDistance
    extends java.lang.Object
    implements EditDistance<java.lang.Integer>
    An edit distance algorithm based on the length of the longest common subsequence between two strings.

    This code is directly based upon the implementation in LongestCommonSubsequence.

    For reference see: https://en.wikipedia.org/wiki/Longest_common_subsequence_problem.

    For further reading see:

    Lothaire, M. Applied combinatorics on words. New York: Cambridge U Press, 2005. 12-13

    Since:
    1.0
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Integer apply​(java.lang.CharSequence left, java.lang.CharSequence right)
      Calculates an edit distance between two CharSequence's left and right as: left.length() + right.length() - 2 * LCS(left, right), where LCS is given in LongestCommonSubsequence.apply(CharSequence, CharSequence).
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.function.BiFunction

        andThen
    • Constructor Detail

      • LongestCommonSubsequenceDistance

        public LongestCommonSubsequenceDistance()
        Creates a new instance.
    • Method Detail

      • apply

        public java.lang.Integer apply​(java.lang.CharSequence left,
                                       java.lang.CharSequence right)
        Calculates an edit distance between two CharSequence's left and right as: left.length() + right.length() - 2 * LCS(left, right), where LCS is given in LongestCommonSubsequence.apply(CharSequence, CharSequence).
        Specified by:
        apply in interface java.util.function.BiFunction<java.lang.CharSequence,​java.lang.CharSequence,​java.lang.Integer>
        Specified by:
        apply in interface ObjectSimilarityScore<java.lang.CharSequence,​java.lang.Integer>
        Specified by:
        apply in interface SimilarityScore<java.lang.Integer>
        Parameters:
        left - first character sequence.
        right - second character sequence.
        Returns:
        distance.
        Throws:
        java.lang.IllegalArgumentException - if either String input null.