隐藏页面特效

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

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

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

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

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

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

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

算法实现:(Java实现)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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]) {<br>          //设置其重复子串结束位置
            end=i;
            //子串长度
            int len = end - start;
            //子串长度大于现有的最大子串长度
            if (len > (maxEnd - maxStart)) {
                //则进行赋值
                maxStart = start;
                maxEnd = end;
            }
            //开始截取位置为end结束位置
            start = end;
        }
    }
    //截取字符串
    return str.substring(maxStart,maxEnd);
}

  


__EOF__

本文作者lonecloud
本文链接https://www.cnblogs.com/lonecloud/p/9281875.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   lonecloud  阅读(10092)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:lonecloud,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply
点击右上角即可分享
微信分享提示