识别回文Python的两种不同方法的优点和缺点

时间:2018-05-08 22:50:23

标签: python

我是python和编程的新手,对于编写回文检测器的不同方法有疑问。

从我所知道的一点点开始,我能够使用while循环制作一个......

word = str(input("Enter a word: "))
length = len(word)
x = 0
while length-x >= x:
    if word[(length-1)-x] == word[x]:
        y = True
        x += 1
    else:
        y = False
        break           
print (y)

但是从其他回文问题我看到了更短(更pythonic?)的方式......

word = input("Enter a word: ")

rword = word[-1::-1]

print (word == rword)

除了明显的长度差异外,使用这两种代码的优缺点是什么?此外,不确定这是否是一个愚蠢的问题,但这些问题是否被认为是递归的?

1 个答案:

答案 0 :(得分:3)

第一个优点是不需要复制word。这只会变得很重要(或者你需要做几百万次)。

请注意word[::-1]就足够了,开头是隐式0

您的第一个代码也可以简化(并放入函数):

def is_palindrome(s):
    for i in range(len(s)):
        if s[i] != s[-(i + 1)]:
            return False
    return True