@Test
public void getMaxRepeatSubStr(){
// for()
// contains("badbadx".toCharArray(),"blaaa".toCharArray());
getMaxSubRepeat("blaaabadbdababad");
}
//思想就是:從頭開始,你個個截取,然後和餘下的字符串比較
public String getMaxSubRepeat(String str) {
List<String> list = new ArrayList<>();
int maxLen = -1;
if (str == null || str.length() == 0) {
return null;
}
for (int j = 0; j < str.length(); j++) {
for (int len = (str.length() - j) / 2; len > 0; len--) {
if(len<=maxLen)
{
break;
}
String target = str.substring(j, j+len);
String remaining = str.substring(j + len);
if (contains(remaining.toCharArray(), target.toCharArray())) {
//if (remaining.contains(target)) {
maxLen = maxLen<target.length()?target.length():maxLen;
list.add(target);
System.out.println(target);
break;
}
}
}
return null;
}
public boolean contains(char[] str, char[] target) {
if (str == null || target == null || str.length == 0 || target.length == 0) {
return false;
}
if (str.length < target.length) {
return false;
}
for (int i = 0; i < str.length - target.length+1; i++) {
for (int j = 0; j < target.length; j++) {
if (str[i + j] != target[j]) {
break;
}
if(j==target.length-1){
return true;
}
}
}
return false;
}