zoukankan      html  css  js  c++  java
  • 算法练习:求字符串的最长重复子串(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); }

      

  • 相关阅读:
    企业组织与经营管理
    VS2008试用版到期解决办法
    [分期付款] 建行安居分期,刚申请过,最高额度居然能申请到100万!汗。。
    [手游新项目历程]-29- windows-PC与 linux虚拟机交互
    诛仙手游培元属性
    [Warning] TIMESTAMP with implicit DEFAULT value
    bzoj3631
    bzoj1257
    bzoj1041
    bzoj1560
  • 原文地址:https://www.cnblogs.com/lonecloud/p/9281875.html
Copyright © 2011-2022 走看看