小易得到了一个仅包含大小写英文字符的字符串,该字符串可能不是回文串。(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串,“asds”就不是回文串。)
小易可以在字符串尾部加入任意数量的任意字符,使其字符串变成回文串。
现在请你编写一个程序,程序要能计算出小易可以得到的最短回文串。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
一行包括一个字符串 。
输出描述:
一行包括一个字符串,代表答案。
示例1
输入例子:
noon
输出例子:
noon
示例2
输入例子:
noo
输出例子:
noon
示例3
输入例子:
helloworld
输出例子:
helloworldlrowolleh
本题通过模拟,可以发现规律,只需要找到原始字符串和反方向字符串中共同的部分,然后在原始字符串后面加上反向字符串中两者共有的部分后面的字符串即可得到想要的答案。
string=input()
if string[:]==string[::-1]:
print(string)
else:
initstring=string
reversestring=string[::-1]
reindex=0
for i in range(len(initstring)):
if initstring[i]==reversestring[reindex]:
if reversestring[:len(initstring)-i]==initstring[i:]:
reindex=len(initstring)-i
break
else:
continue
initstring+=reversestring[reindex:]
print(initstring)