package ali;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Main {
// 思路:使用两个指针,两个指针的间隔从1,2,3...依次增大, 同时向右移动两个指针,
// 在移动的过程中判断指针位置的字符是否相同,并记录最长子串的长度。
public static void main(String[] args) {
String str1 = "hellowdhelloko";
String result = maxRepat(str1);
System.out.println(result);
}
// i索引就是上面说到的 间隔,j索引就是不断遍历这个字符串每一个字符的指针
public static String maxRepat(String input) {
// 参数检查
if (input == null || input.length() == 0) {
return null;
}
// 重复子串的最长长度
int max = 0;
// 最长重复子串的起始位置
int first = 0;
int k = 0;
for (int i = 1; i < input.length(); i++) {
for (int j = 0; j < input.length() - i; j++) {
if (input.charAt(j) == input.charAt(i + j)) {
k++;
} else {
k = 0;
}
if (k > max) {
max = k;
first = j - k + 1;
}
}
}
if (max > 0) {
System.out.println(max);
return input.substring(first, first + max);
}
return null;
}
}
求字符串中的“最长重复子串”
猜你喜欢
转载自blog.csdn.net/a1066196847/article/details/77509165
今日推荐
周排行