码迷,mamicode.com
首页 > 编程语言 > 详细

子字符查找KMP算法 - 子串自匹配索引表

时间:2017-01-11 08:11:09      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:div   mp算法   tab   break   匹配   pre   bre   length   int   

    public static int[] kmpTable(char[] seq) {
        int[] tbl = new int[seq.length];
        tbl[0] = 1;
        for (int i = 1; i < seq.length; i++) {// 子串最开始
            int j = tbl[i - 1];// 从已经算出的索引开始
            l1: for (; j <= i; j++) {
                for (int k = 0; j + k <= i; k++) {
                    if (seq[j + k] == seq[k] && j + k == i) {
                        break l1;// 完全匹配
                    } else if (seq[j + k] != seq[k] && k >= 1)// 子串内部自匹配
                        j += tbl[k - 1];
                }
            }
            tbl[i] = j;
        }
        return tbl;
    }

public static int[] kmpTable(char[] seq) {
int[] tbl = new int[seq.length];
tbl[0] = 1;
for (int i = 1; i < seq.length; i++) {// 子串最开始
int j = tbl[i - 1];// 从已经算出的索引开始
l1: for (; j <= i; j++) {
for (int k = 0; j + k <= i; k++) {
if (seq[j + k] == seq[k] && j + k == i) {
break l1;// 完全匹配
} else if (seq[j + k] != seq[k] && k >= 1)// 子串内部自匹配
j += tbl[k - 1];
}
}
tbl[i] = j;
}
return tbl;
}

子字符查找KMP算法 - 子串自匹配索引表

标签:div   mp算法   tab   break   匹配   pre   bre   length   int   

原文地址:http://www.cnblogs.com/hujz/p/6272207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!