Public Static int[] Kmptable (Char[] seq) { int[] tbl =New int[Seq.length]; tbl[0] = 1; for(inti = 1; i < seq.length; i++) {//substring at the beginning intj = Tbl[i-1];//start with an already calculated indexL1: for(; J <= I; j + +) { for(intk = 0; J + k <= i; k++) { if(Seq[j + K] = = Seq[k] && j + k = =i) { BreakL1;//Exact Match}Else if(Seq[j + K]! = seq[k] && k >= 1)//substring internal self-matchingJ + =Tbl[k-1]; }} Tbl[i]=J; } returntbl; }
public static int[] kmptable (char[] seq) {
int[] tbl = new Int[seq.length];
Tbl[0] = 1;
for (int i = 1; i < seq.length; i++) {//substring at the very beginning
Int J = tbl[i-1];//starts from an already calculated index
L1:for (; J <= I; j + +) {
for (int k = 0; j + k <= i; k++) {
if (Seq[j + K] = = Seq[k] && j + k = = i) {
Break l1;//Exact Match
} else if (Seq[j + K]! = seq[k] && k >= 1)//substring internal self-matching
J + = Tbl[k-1];
}
}
Tbl[i] = j;
}
return TBL;
}
Sub-character lookup KMP algorithm-substring self-matching index table