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

KMP算法--通俗易通

时间:2019-12-29 23:23:22      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:tostring   int   abd   out   ret   ext   length   char   i++   

public class KMPAlgorithm {
    public static void main(String[] args) {
        String str1 = "BBC ABCDAB ABCDABCDABDE";
        String str2 = "ABCDABD";
        int[] kmpTable = kmpTable(str2);
        System.out.println(Arrays.toString(kmpTable));
    }

    public static int[] kmpTable(String dest) {

        int next[] = new int[dest.length()];
        next[0] = 0; // 如果字符的长度为1,则部分匹配值就是0
        for (int i = 0, j = 1; j < dest.length(); j++) {            //ABCDABD

            while (i > 0 && dest.charAt(i) != dest.charAt(j)) {
                i = next[i - 1];
            }

            if (dest.charAt(i) == dest.charAt(j)) { //
                i++;
            }

            next[j] = i;
        }

        return next;
    }
}

KMP算法--通俗易通

标签:tostring   int   abd   out   ret   ext   length   char   i++   

原文地址:https://www.cnblogs.com/MrRightZhao/p/12116915.html

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