找出最大重复子串(不是最优解)

    xiaoxiao2023-10-10  170

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

     

    最新回复(0)