判断是否是回文有三种方法:
一、
先使指针指向字符串中第一个元素和最后一个元素,进行比较:
如果不相同,则不是回文,返回 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()