Python中的简单回文检查?

时间:2013-09-23 12:48:00

标签: python string reverse slice palindrome

我正在为学校做一个回文检查计划,但有一个转折。

现在我已经知道我可以使用反向函数或类似的东西:

[-1::-1]

但是,该程序特别要求不进行字符串切片或使用.reverse()函数。所以,我的问题是,如果我不能使用这两种简单的方法,我将如何去做呢?

3 个答案:

答案 0 :(得分:5)

很明显,这只是出于学术目的,因为使用反向功能这段代码是微不足道的。

def is_palindrome(string):
    for i,char in enumerate(string):
        if char != string[-i-1]:
            return False
    return True

>>> is_palindrome('hello')
False    
>>> is_palindrome('helloolleh')
True
>>> is_palindrome('')
True
>>> is_palindrome(' ')
True
>>> is_palindrome('a')
True

答案 1 :(得分:4)

典型的解决方案是:

def is_palindrome(string):
    result = True
    str_len = len(string)
    for i in range(0, int(str_len/2)): # you need to check only half of the string
        if string[i] != string[str_len-i-1]:
            result = False
            break
    return result # single return statement is considered a good practice

答案 2 :(得分:1)

你根本不需要任何reverse功能来检查是否有回文。考虑:

  • 空字符串是回文
  • 长度为1的字符串是回文
  • 如果第一个和最后一个字符相等而且每个其他字符串都是回文并且“中间”部分(没有第一个和最后一个字符)是回文的回文结构。

尝试在python中实现这一点 - 这很容易! (提示:最后一个字符为str[-1],中间字符为str[1:-1])。