Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。现在呢,就是让你判断输入的字符串是否是回文串。
Input
有多组输入,每行输入一串字符,保证字符串长度不会大于 100000,字符串由大小写英文字母和空格组成,以字符串“2013”作为结束标志。
Output
每行输出一个字符串,如果输入是回文串,输出“YES”,否则输出“NO”(注意:判断的时候空格是不作判断的,详见样例)。
Sample Input
aaaa
ggg g
lozxvxoMJBCHsTXooXTsHCBJMoxvxzol
i am a good acmer
2013
Sample Output
YES
YES
YES
NO
参考程序
while True:
pri=input()
if pri=="2013":
break
else:
pri_list = []
for i in range(len(pri)):
if pri[i] != ' ':
pri_list.append(pri[i])
c=pri_list[:]
pri_list.reverse()
if c==pri_list:
print("YES")
else:
print("NO")
注意:
1.需要考虑去掉字符串中的空格,但是不能直接在字符串上调用方法去除空格,原因是字符串时不可变的,所以可以一个字符一个字符地取出来,添加在列表中,这样实现了去除空格。
2.“回文字符串”的特点是,将原串逆置以后,仍与原来的字符串相同,所以可以考虑列表的reverse方法。而reverse方法方法会改变原字符串的内容,所以需要先赋值一个副本。在这里如果简单地用赋值号“=”进行复制时不可行的,这样一个列表内容改变,另一个列表也会同步变动,原因是二者的引用是相同的。所以应使用字符串的切片操作pri_list[:]。当然也可写成如下形式,利用切片操作,一步到位进行逆置。
while True:
pri=input()
if pri=="2013":
break
else:
pri_list = []
for i in range(len(pri)):
if pri[i] != ' ':
pri_list.append(pri[i])
c=pri_list[::-1]
if c==pri_list:
print("YES")
else:
print("NO")