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

本文介绍了三种判断字符串是否为回文的有效方法:使用双指针从两端向中间比较,递归地检查首尾字符,以及直接比较原字符串与其逆序后的结果。这些方法适用于多种编程场景,帮助开发者高效解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、
先使指针指向字符串中第一个元素和最后一个元素,进行比较:
  如果不相同,则不是回文,返回 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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值