• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

link-intersystems / lis-commons / #248

22 Sep 2023 04:07PM UTC coverage: 89.886% (-0.2%) from 90.043%
#248

push

renelink
Added longest common sequence implementation.

62 of 62 new or added lines in 3 files covered. (100.0%)

7492 of 8335 relevant lines covered (89.89%)

0.9 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

84.62
/lis-commons-util/src/main/java/com/link_intersystems/util/diff/LongestCommonSubsequence.java
1
package com.link_intersystems.util.diff;
2

3
import com.link_intersystems.util.CharacterSequence;
4
import com.link_intersystems.util.ListSequence;
5
import com.link_intersystems.util.Sequence;
6

7
import java.util.List;
8

9
import static java.util.Objects.*;
10

11
/**
12
 * Implements a longest common subsequence algorithm.
13
 *
14
 * @param <E>
15
 * @see <a href="https://en.wikipedia.org/wiki/Longest_common_subsequence">Longest common subsequence</a>
16
 */
17
public class LongestCommonSubsequence<E> implements Sequence<E> {
18

19
    public static Sequence<Character> of(CharSequence charSequence1, CharSequence charSequence2) {
20
        return new LongestCommonSubsequence<>(new CharacterSequence(charSequence1), new CharacterSequence(charSequence2));
1✔
21
    }
22

23
    private Sequence<E> sequence1;
24
    private Sequence<E> sequence2;
25

26
    private Sequence<E> lcs;
27

28
    public LongestCommonSubsequence(List<E> list1, List<E> list2) {
29
        this(new ListSequence<E>(list1), new ListSequence<E>(list2));
×
30
    }
×
31

32
    public LongestCommonSubsequence(Sequence<E> sequence1, Sequence<E> sequence2) {
1✔
33
        this.sequence1 = requireNonNull(sequence1);
1✔
34
        this.sequence2 = requireNonNull(sequence2);
1✔
35
    }
1✔
36

37
    protected Sequence<E> getLcs() {
38
        if (lcs == null) {
1✔
39
            LongestCommonSubsequenceTable longestCommonSubsequenceTable = new LongestCommonSubsequenceTable(sequence1, sequence2);
1✔
40
            lcs = longestCommonSubsequenceTable.getLcsPath();
1✔
41
        }
42
        return lcs;
1✔
43
    }
44

45
    @Override
46
    public E elementAt(int index) {
47
        return getLcs().elementAt(index);
1✔
48
    }
49

50
    @Override
51
    public int length() {
52
        return getLcs().length();
1✔
53
    }
54

55

56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc