1. 求字符串的最长重复子串java
例如:aaaaaaaaabbbbcccaaassscvvv这里面的最长重复子串为aaaaaaaaa算法
算法思路:算法时间复杂度(O(n))数组
1. 将这一个字符串先转成char数组;code
2. 将这一char数组进行遍历blog
3. 比较char数组中第i-1个与第i个的字符是否相等,若是不相等则进行截取字符串长度,而后将其进行比较,若是其长度比现有长度大,则进行替换,不然什么也不作字符串
算法实现:(Java实现)string
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); }