Python Palindrome挑战赛

时间:2014-01-25 08:24:23

标签: python python-2.x palindrome

我被要求编写一个程序来测试给定的字符串是否是回文。 n是长度为1< = x< = 10000的字符串,不包含空格或特殊字符。我在几分钟内写了以下内容:

 def run(n):
  n = n.replace('\n','')
  nprime = n[::-1]
  Bool = True
  for i in range(0,len(n)):
    if not n[i]==nprime[i]:
      Bool = False
  if Bool==True:
    print "Y"
  else:
    print "N"

显然这对某些测试用例来说是失败的。我不知道它失败的测试用例。我尝试了所有可以想到的边缘情况并且我的脚本似乎工作正常。有没有人知道它可能会失败的地方?

1 个答案:

答案 0 :(得分:0)

我会将您的代码简化为:

def check(inval):
    val = inval.strip().lower()
    lav = val[::-1]
    print (val == lav) and 'Y' or 'N'

如果您想使用真正的通用版本:

def check(inval):
    val = ''.join([l for l in inval if l.isalnum()]).lower()
    lav = val[::-1]
    result = (val == lav)
    # print result and 'Y' or 'N' # Since comments indicate some dislike this!
    return result