美文网首页
ARTS第八周

ARTS第八周

作者: leo小超 | 来源:发表于2019-06-23 17:54 被阅读0次

    Algorithm

    shortest-palindrome
    给定一个字符串s,在s前增加最少字符串使得回文
    还是上一周的算法
    KMP实现方法
    KMP算法分享主要计算每个索引位置,前缀最长重复字符串表(文中最后分享)
    反转s为reverse,新字符串为s+"#"+reverse,找新字符串最后一位前缀匹配程度,即s前缀回文程度,只需要在s前补充反转字符串剩余不回文的部分
    比如:

    public String shortestPalindrome(String s) {
            StringBuilder reverse = new StringBuilder(s).reverse();
            // reverse = abcbabcaba
            // newStr = reverse+"#" + s 即abcbabcaba#abacbabcba
            // 找newStr最后一位和前缀匹配程度,即s前缀的回文程度,需要补充的字符串为出去回文字符串剩余的反转字符串
            String newStr = s + "#" + reverse;
    
            int[] f = calculateTable(newStr);
            for (int item : f) {
                System.out.print(item);
            }
            System.out.println();
            return reverse.substring(0, s.length() - f[newStr.length() - 1]) + s;
        }
    
    public int[] calculateTable(String subStr) {
            // 计算table
            int[] f = new int[subStr.length()];
            f[0] = 0;
            int t = 0;
            char temp;
            for (int i = 1; i < subStr.length(); i++) {
                temp = subStr.charAt(i);
                if (temp == subStr.charAt(t)) {
                    f[i] = ++t;
                } else {
                    while (t > 0) {
                        // 假设到b不匹配,b之前匹配度为caca即t,t=4
                        // 拿caca继续找匹配度(索引从0开始)t=f[t-1]=f[3]=2,s[t]=s[2]=c≠b
                        // 拿ca继续找t=f[t-1]=f[1]=0匹配度为0结束
                        t = f[t - 1];
                        if (t > 0) {
                            if (temp == subStr.charAt(t)) {
                                f[i] = ++t;
                                break;
                            }
                        }
                    }
                }
            }
            return f;
        }
    

    Review

    distributed-system-microservices
    提出了一些微服务基本的一些优缺点

    Tips

    Share

    KMP算法

    相关文章

      网友评论

          本文标题:ARTS第八周

          本文链接:https://www.haomeiwen.com/subject/weqwqctx.html