遍历 names.txt 文件,输出长度最长的回文人名

判断是否是回文有三种方法:

一、
先使指针指向字符串中第一个元素和最后一个元素,进行比较:
  如果不相同,则不是回文,返回 False;
  如果相同,两边指针各往中间移动一个单位,继续比较。
  若两指针相遇,证明字符串对称的位置元素相同,也就是回文,返回True
代码如下:

def is_huiwen(s):
    low = 0
    high = len(s) -1
    while low < high:
        if s[low] ==s[high]:
            low += 1
            high -= 1
        else:
            return False
    return True

二、回文字符串的递归判断:

  假设只有一个或零个元素,那么这个字符串就是回文;否则,判断第一个元素和最后一个元素是否相同:
    如果不同,返回False;
    如果相同,递归判断第一个和最后一个之间的字符串是否是回文即可。
代码如下:

def is_huiwen(s):
    l = len(s)
    if l <= 1:
        return True
    else:
        if s[0] == s[-1]:
            return is_huiwen(s[1:-1])
        else :
            return False

三、最简单的一种,将字符串的逆序存到另一个字符串中,两个字符串比较,相同就是回文,不同就不是。

def is_huiwen(s):
     t = s[-1::-1]
     if s == t:
        return True
     else:
        return False

遍历文件输出人名的主函数如下:

maxlen = 0
maxline = ''
f = open('names.txt', 'r')

for line in f:
    line = line.strip()
    tline = line[-1:]
    if is_huiwen(line) and len(line) > maxlen:
        maxlen = len(line)
        maxline = line

print maxline
f.close()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值