2 回答
TA贡献1876条经验 获得超7个赞
不需要切片/替换字符串并且成本很高,因为它一遍又一遍地创建字符串。在字符串不太方便处理的语言(如 C)中,您甚至无法想象会这样做。
当然,您需要某种循环,但递归会解决这个问题。
您可以“以旧方式”执行此操作,只需递归地传递开始和结束索引,并使用嵌套函数将开始条件隐藏给调用者:
def is_palindrome(s):
def internal_method(s,start,end):
if start>=end:
return True
if s[start] != s[end]:
return False
else:
return internal_method(s,start+1,end-1)
return internal_method(s,0,len(s)-1)
如果start遇到end或检查的字母不匹配(当然会有不同的结果),递归停止
稍微测试一下似乎有效:)
>>> is_palindrome("")
True
>>> is_palindrome("a")
True
>>> is_palindrome("ab")
False
>>> is_palindrome("aba")
True
>>> is_palindrome("abba")
True
>>> is_palindrome("abbc")
False
TA贡献1846条经验 获得超7个赞
我正在猜测您在这里寻找什么,因为您的问题不是很清楚,但这适用于去掉您提供的单词的第一个和最后一个字符?
Python 2.7.14 (default, Nov 12 2018, 12:56:03)
>>> string = "abccbaa"
>>> print(string[1:-1])
bccba
添加回答
举报