[笔试真题]计算重复字符串长度Java

请从字符串中找出至少重复一次的子串的最大长度

 输入描述:
      字符串,长度不超过1000
  输出描述:
      重复子串的长度,不存在输出0
  输入示例:
      ababcdabcefsgg
  输出示例:
      3
  说明:
      abc为重复的最长子串

代码实现

import java.util.Scanner;

/**
 * @author ellen
 * @date 2020-01-10 13:29
 * @description:计算重复字符串长度
 */
public class Main{
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        System.out.println(findLongestRepeatString(str));
    }
    private static int findLongestRepeatString(String s){
        int maxLen = 0;
        int len = s.length();
        for (int i = 0; i < len; i++) {
            int l = 0;
//            int k = i;
            for (int j = i + 1; j < len; j++) {
//                l = statLen(s, k, j);
                l = statLen(s, i, j);
                if(maxLen < l){
                    maxLen = l;
                }
            }
        }
        return maxLen;
    }
    private static int statLen(String s, int k, int j){
        int len = 0;
        while(k < s.length() && j < s.length() && s.charAt(k) == s.charAt(j)){
            k++;
            j++;
            len++;
        }
        return len;
    }
}
发布了91 篇原创文章 · 获赞 193 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44057443/article/details/103923273