如果一个字符串可以由某个长度为 kk 的字符串重复多次得到,则称该串以 kk 为周期。如, abcabcabcabcabcabcabcabc 以 33 为周期(注意,它也以 66 和 1212 为周期)。输入一个长度不超过 8080 的字符串,输出其最小周期。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String c, k;
// c是原来输入的总字符串,k是重复的字符串
int n;
n = input.nextInt();
// System.out.println();
while (n-- != 0) {// 控制输入n组数据
c = input.next();
k = "";// 初始化!
for (int i = 0; i < c.length(); i++) {
char s[] = c.toCharArray();
k += s[i];// 在k的后面加上s中的下一项(逐个记录s中的字符串)
if (s.length % k.length() == 0) {// 如果能整除(就是重复可以正好凑齐)
int t = s.length / k.length();// t是循环几次
String k2 = "";// k2用来比较
for (int j = 0; j < t; j++) {
k2 += k;// k2一直累加到长度与s相同
}
if (k2.equals(c)) {// 判断是否相同
System.out.println(k.length());
break;
}
}
}
if (n > 0) {
System.out.println();//输出格式
}
}
}
}