
嗨,我有点不明白为什么ans的输出是'hello‘,当我试图使用这个递归方法反转列表时。根据调试器,ans在函数中是正确的,但在退出rs函数时会突然改变。


发布于 2022-06-22 14:31:01
几点意见:
reverseString()应该有返回类型的None,所以不需要行ans的逻辑看起来很好,但是根据注释“不要返回任何东西,修改s就地”,您需要修改s;您可以使用(有点神秘的)语句anss[:] = ans来实现这一点,该语句(由于:字符)将s的内容替换为: of :语法的内容,这并不重要,但您可以使用s[1:] (仅一个:)而不是s[1::]。
更新后的代码(我已将List指定为list,以保留reverseString()的def语句):
List = list
class Solution:
def reverseString(self, s: List[str]) -> None:
ans=[]
def rs(s, ans):
if len(s) == 0:
return
a = s[0]
rs(s[1:], ans)
ans.append(a)
rs(s, ans)
s[:] = ans
x = Solution()
s = [c for c in 'hello']
print('input:', s, sep='\n')
x.reverseString(s)
print('output:', s, sep='\n')输出:
input:
['h', 'e', 'l', 'l', 'o']
output:
['o', 'l', 'l', 'e', 'h']https://stackoverflow.com/questions/72717281
复制相似问题