一、题目描述
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s
的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问
题。
二、题解
代码如下:
from typing import List
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
s[:]=s[::-1]
Solution = Solution()
s = ["h","e","l","l","o"]
Solution.reverseString(s)
print(s)#['o', 'l', 'l', 'e', 'h']
注意:需要原地反转
小知识点:
在 Python 中,s[:]=s[::-1]和s=s[::-1]这两种写法有不同的作用:
这里涉及到 Python 中可变(mutable)和不可变(immutable)数据类型的区别。
s[:]=s[::-1],这里的s[:]表示对列表s进行切片操作,相当于对列表进行了原地修改。这种方式会将s的元素反转并覆盖原始的s,实现了题目要求的原地修改。
s=s[::-1],这实际上是创建了一个新的字符串对象并将其赋给s,并没有在原地修改列表s,因此这种方式不能实现题目要求的原地修改。
在 Python 中,可变数据类型(如列表)可以进行原地修改,而不可变数据类型(如字符串)则不能直接进行原地修改,需要创建新的对象来实现修改。