我被要求编写一个程序来测试给定的字符串是否是回文。 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"
显然这对某些测试用例来说是失败的。我不知道它失败的测试用例。我尝试了所有可以想到的边缘情况并且我的脚本似乎工作正常。有没有人知道它可能会失败的地方?
答案 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