我正在为学校做一个回文检查程序,但有一个转折点。
现在我已经知道我可以使用反向函数或类似的东西:
[-1::-1]
但是,该程序明确要求不进行字符串切片或使用 .reverse() 函数。所以,我的问题是,如果我不能使用这两种简单的方法,我该怎么做?
我正在为学校做一个回文检查程序,但有一个转折点。
现在我已经知道我可以使用反向函数或类似的东西:
[-1::-1]
但是,该程序明确要求不进行字符串切片或使用 .reverse() 函数。所以,我的问题是,如果我不能使用这两种简单的方法,我该怎么做?
很明显,这仅用于学术目的,因为使用反向函数此代码将是微不足道的。
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
典型的解决方案是:
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
实际上,您根本不需要任何reverse
函数来检查某事物是否是回文。考虑:
尝试在 python 中实现它——这很简单!(提示:最后一个字符是str[-1]
,中间是str[1:-1]
)。