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 语句。
我发布了两个解决方案,我在 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 语句。