Leetcode Reverse String问题not accepting in-place解决办法

Leetcode Reverse String problem not accepting in-place solution

我发布了两个解决方案,我在 leetcode 中尝试解决问题编号:344

https://leetcode.com/problems/reverse-string/

解决方案 1

class Solution:
def reverseString(self, s: List[str]) -> None:
    return s[::-1]

解决方案 2

class Solution:
def reverseString(self, s: List[str]) -> None:
    first = 0
    last = len(s) - 1
    
    while first <= last:
        s[first], s[last] = s[last], s[first]
        first += 1
        last -= 1
        
    return s
    

据我了解,两种解决方案都已到位。但是方案一不被采纳,提示为错误答案。解决方案 2 被接受。有人可以帮我吗?

第一个不是in-place。您的函数签名表明您 return 您还未执行任何操作。

问题是不要 return 任何意味着您需要进行就地逆向的事情。 此外,这是字符串列表而不是字符串,因此无论您在函数内部更改什么,它都会反映在列表中,因为列表是可变的。

正确的解决方案是

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        s.reverse()

此外,如果您想按照自己的风格做,那么正确的行将是

s[:] = s[::-1]

第一个解决方案创建一个新列表并且不更改参数(感觉也更干净)。

编辑: 不用管下面的部分。它不会做任何事情。谢谢

但是你可以这样做

s = s[::-1]

而不是 return 语句。