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); }

      

  • 相关阅读:
    钢镚儿和鲨鱼记账的差距
    团队绩效管理
    做什么都队第一段冲刺绩效评比
    第一阶段各组对我们的评价
    第一阶段对各小组的评价
    团队十日冲刺最后一天
    团队十日冲刺第九天
    团队十日冲刺第八天
    满心萧然要坚持更博客鸭
    生而为人
  • 原文地址:https://www.cnblogs.com/lonecloud/p/9281875.html
Copyright © 2011-2022 走看看