周期串(JAVA语言)

package 第三章习题;
/*
 * 如果一个字符可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。
 * 例如:abcabcabcabc 以3为周期(注意:它也以6和12为周期)
 * 输入一个长度不超过80的字符串,输出其最小周期。
 */
import java.util.*;
public class 周期串 {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
String s=in.next();
int max_T=s.length();
   int T=1;
   
   while(T<max_T){
       if(max_T/T*T!=max_T) {T++;continue;}    //筛选所有可能成为T的值
       int fg=1;
       for(int i=1;i*T<max_T;i++){
           String c1=s.substring(0,T);
           String c2=s.substring(i*T,(i+1)*T);
           if(!c1.equals(c2)) fg=0;        //如果有一个片段不满足则继续循环
       }
       if(fg==1)break;     
       T++;
   }
   System.out.println(T);

}


}

猜你喜欢

转载自blog.csdn.net/liuyaoyun/article/details/79342250