国王的魔镜
题目描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
输入
只有一个字符串,由大写英文字母组成,表示最终的项链。
输出
只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输出 [复制]
2
AC代码:
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 String str1 = sc.next(); 7 String subString1 = str1.substring(0, str1.length() / 2); 8 String subString2 = new StringBuffer(str1.substring(str1.length() / 2, str1.length())).reverse().toString(); 9 int i = 0; 10 while (subString1.equals(subString2)) { 11 subString1 = str1.substring(0, str1.length() / 2); 12 subString2 = new StringBuffer(str1.substring(str1.length() / 2, str1.length())).reverse().toString(); 13 str1 = subString1; 14 i++; 15 } 16 System.out.println(i - 1); 17 } 18 }