• 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

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

3
import com.link_intersystems.util.Sequence;
4

5
import java.util.Objects;
6

7
import static java.util.Objects.*;
8

9
public class LongestCommonSubsequenceTable<E> implements IntTable {
10

11
    private final Sequence<E> rowSequence;
12
    private final Sequence<E> columnSequence;
13

14
    private int[][] table;
15
    private LongestCommonSubsequencePath LongestCommonSubsequencePath;
16

17
    public LongestCommonSubsequenceTable(Sequence<E> rowSequence, Sequence<E> columnSequence) {
1✔
18
        this.rowSequence = requireNonNull(rowSequence);
1✔
19
        this.columnSequence = requireNonNull(columnSequence);
1✔
20
    }
1✔
21

22
    public int[][] getTable() {
23
        if (table != null) {
1✔
24
            return table;
1✔
25
        }
26

27
        table = new int[rowSequence.length() + 1][columnSequence.length() + 1];
1✔
28

29
        for (int row = 1; row <= rowSequence.length(); row++) {
1✔
30
            for (int column = 1; column <= columnSequence.length(); column++) {
1✔
31
                if (Objects.equals(rowSequence.elementAt(row - 1), columnSequence.elementAt(column - 1))) {
1✔
32
                    table[row][column] = table[row - 1][column - 1] + 1;
1✔
33
                } else {
34
                    table[row][column] = Math.max(table[row - 1][column], table[row][column - 1]);
1✔
35
                }
36
            }
37
        }
38

39
        return table;
1✔
40
    }
41

42
    public int getValue(int row, int column) {
43
        return getTable()[row][column];
1✔
44
    }
45

46
    public Sequence<E> getLcsPath() {
47
        if (LongestCommonSubsequencePath != null) {
1✔
48
            return LongestCommonSubsequencePath;
×
49
        }
50

51
        return LongestCommonSubsequencePath = new LongestCommonSubsequencePath<>(this, getRowSequence(), getColumnSequence());
1✔
52
    }
53

54
    public Sequence<E> getRowSequence() {
55
        return rowSequence;
1✔
56
    }
57

58
    public Sequence<E> getColumnSequence() {
59
        return columnSequence;
1✔
60
    }
61

62
    @Override
63
    public int getColumnCount() {
64
        return columnSequence.length() + 1;
1✔
65
    }
66

67
    @Override
68
    public int getRowCount() {
69
        return rowSequence.length() + 1;
1✔
70
    }
71
}
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