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));

	}
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐