Palindrome

Ron Adam radam2 at tampabay.rr.com
Fri Nov 14 13:02:22 EST 2003


On Fri, 14 Nov 2003 14:34:23 +0000, Alan Kennedy <alanmk at hotmail.com>
wrote:

>
>If I were going to follow this approach, I would try to eliminate any
>copying, like so:
>
>def palindrome_test(p):
>    p = p.lower()
>    p = re.sub(r'\W','',p)
>    plen = len(p)
>    for i in xrange(plen/2):
>        if p[i] != p[plen-i-1]:
>            return False
>    return True
>
>regards,

Good point.   Ok,  how about like this?

"""
Test if a string is a palindrome.
"""
import re
def palindrome_test(p):
    p = re.sub(r'\W','',p.lower())
    i = len(p)//2
    while i and p[i] == p[-i-1]:  i -= 1
    return not i

palindrome_list = [
    "A",
    "ab",
    "Oo!",
    "Bolton",
    "This is not a palindrome!",
    "Was it a car or a cat I saw?",
    "No 'H' type, mate, no spot stops one tame python!",
    "A man, a plan, a cat, a ham, a yak, a yam, a hat, a
canal--Panama!",
    ]

for p in palindrome_list:
    print '"'+p+'"',
    if palindrome_test(p):
        print 'is a palindrome.'
    else:
        print 'is not a palindrome.'






More information about the Python-list mailing list