给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的

给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。输出最长的子串
例如,”abcabcabc”满足条件,因为它是由”abc”首尾拼接而成的,而”abcab”则不满足条件。

思想如下:从最长的二等分开始查找,用等分后的子字符串拼接成新的字符串B,与原字符串A进行比较,如果相等,返回这个字符串,如果不相等进行三等分以此类推,如果直至n等分(n=字符串A长度)都不能满足,输出false

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
      String str = sc.nextLine();
        System.out.println(binSearch(str));
    }


    public static String binSearch(String str) {
        int len = 2;
        while (str.length()/len>0){
            if(str.length()%len!=0){
                len++;
                continue;
            }else {
                StringBuilder sb =new StringBuilder();
                for(int i=0;istr.substring(0,str.length()/len));
                }
                if(sb.toString().equals(str)){
                    return str.substring(0,str.length()/len);
                }
                len++;
            }
        }
        return "false";
    }
}

你可能感兴趣的:(编程题)