算法:LeetCode1062_最长重复子串 _java实现
【代码】算法:LeetCode1062_最长重复子串 _java实现。
·
package com.leetcode;
import java.util.HashSet;
import java.util.Set;
/**
* LeetCode1062_最长重复子串
*/
public class LeetCode1062 {
public static int longestRepeatingSubString(String s) {
int l = 0, r = s.length() - 1;
while (l < r) {
int mid = l + (r - l + 1) / 2;
if (f(s, mid)) {
l = mid;
} else {
r = mid - 1;
}
}
return l;
}
private static boolean f(String s, int length) {
Set<String> seen = new HashSet<>();// 查重
for (int i = 0; i <= s.length() - length; i++) {
int j = i + length - 1;
String sub = s.substring(i, j + 1);
if (seen.contains(sub)) {
return true;
}
seen.add(sub);
}
return false;
}
public static void main(String[] args) {
String str1 = "abcd";
System.out.println("result:" + longestRepeatingSubString(str1));
String str2 = "abbaba";
System.out.println("result:" + longestRepeatingSubString(str2));
String str3 = "aabcaabdaab";
System.out.println("result:" + longestRepeatingSubString(str3));
String str4 = "aaaaa";
System.out.println("result:" + longestRepeatingSubString(str4));
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)