算法练习:求字符串的最长重复子串(Java实现)

Posted lonecloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习:求字符串的最长重复子串(Java实现)相关的知识,希望对你有一定的参考价值。

1. 求字符串的最长重复子串

例如:aaaaaaaaabbbbcccaaassscvvv这里面的最长重复子串为aaaaaaaaa

算法思路:算法时间复杂度(O(n))

1. 将这一个字符串先转成char数组;

2. 将这一char数组进行遍历

3. 比较char数组中第i-1个与第i个的字符是否相等,如果不相等则进行截取字符串长度,然后将其进行比较,如果其长度比现有长度大,则进行替换,否则什么也不做

算法实现:(Java实现)

    private static String reSubStr(String str){
        /**
         * 设置变量
         * start:开始
         * end:结束
         * maxStart:最长子串开始位置
         * maxEnd:最长子串结束位置
         */
        int start=0,end=1,maxStart=0,maxEnd=1;
        char[] chars = str.toCharArray();
        for (int i = 1; i < chars.length; i++) {
            //判断如果不相等,则计算器长度
            if(chars[i-1]!=chars[i]) {
          //设置其重复子串结束位置 end=i; //子串长度 int len = end - start; //子串长度大于现有的最大子串长度 if (len > (maxEnd - maxStart)) { //则进行赋值 maxStart = start; maxEnd = end; } //开始截取位置为end结束位置 start = end; } } //截取字符串 return str.substring(maxStart,maxEnd); }

  

以上是关于算法练习:求字符串的最长重复子串(Java实现)的主要内容,如果未能解决你的问题,请参考以下文章

求两个输入的字符串的最长公共子串

字符串练习:最长无重复字符子串

java求最大公共子串

求两个字符串的最长公共子串,要求输入两个字符串,输出他们的最长公共子串,包括长度。

字符串----最长重复子串

算法练习-寻找最大的不重复子串