Python编程基础题(10-回文字符串判断)

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")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值