传说魔镜可以把任何接触镜面的东西变成原来的两倍,不过增加的那部分是反的。例如,对于字符串XY,若把Y端接触镜面,则魔镜会把这个字符串变为XYYX;若再用X端接触镜面,则会变成XYYXXYYX。对于一个最终得到的字符串(可能未接触魔镜),请输出没使用魔镜之前,该字符串最初可能的最小长度。
输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个字符串(长度小于100,且由大写英文字母构成)。
输出格式:
对于每组测试数据,在一行上输出一个整数,表示没使用魔镜前,最初字符串可能的最小长度。
输入样例:
XYYXXYYX
XYXX
输出样例:
2
4
提交代码:
try:
while True:
str = input()
length =len(str)
while (length>1 and length%2==0):
if str[0:length//2] == str[-1:int(length//2-length-1):-1]:
str = str[0:length//2]
#print("str=",str)
length = len(str)
else:
break
print(len(str))
except EOFError:
pass
思路:对字符串不断地折半进行比较,若折半后对称,则再次折半,判断是否对称