版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012017783/article/details/82387798
问题:求一个字符串中的最长的重复子串
import java.util.*;
/**
寻找一个字符串中的最长的重复子串
*/
public class Solution {
String reg,left;
//最长的重复字串,极端情况就比如abcabc,最长重复字串就是abc
//即为字符串长度的一半,当然这是极端情况,通常都是小于串长一半的
public String getMaxLenStr(String str){
for(int len=str.length()/2;len>0;len--){
//将字符串分割成若干个最长字符串
for(int i=0;i<str.length()/len;i++){
//获取最长子串
reg=str.substring(0,len+1);
//获得最长字串剩下的串
left=str.substring(len+1);
//如果剩下的串中包含"最长子串"
if(left.indexOf(reg)!=-1){
return reg;
}
}
}
return null;
}
public static void main(String[]args){
String str="abcabcab";
Solution s=new Solution();
System.out.println(s.getMaxLenStr(str));
}
}