LeetCode-344反转字符串---Python代码实现及详解

it2022-05-09  39

题目:

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]

输出:["o","l","l","e","h"]

(1)使用 list 本身的reverse() 方法

>>> s = ["h","e","l","l","o"] >>> reversed(s) # Python内置reverse()函数可以反转一个可迭代序列 <list_reverseiterator object at 0x0000014C63AF5CF8> >>> list(reversed(s)) # 强转成list ['o', 'l', 'l', 'e', 'h'] >>> s # s本身并没有修改 ['h', 'e', 'l', 'l', 'o'] >>> s.reverse() # 使用list本身的reverse方法 >>> s # s被改为倒序 ["o","l","l","e","h"] >>>

(2)尝试不用内置 reverse() 方法.

思路:

        因为不允许使用额外的空间只能原地去修改,因此使用两个指针 i 指向第一个元素,j 指向最后一个元素,先把 i 和 j 指向的元素交换一下,然后让 i 指针后移 j 指针前移再把它两个交换,以此类推,最后 i 和 j 指向同一个元素就不需要交换了,这样就得到了一个倒序的序列。

class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ beg = 0 end = len(s) - 1 while beg < end: s[beg], s[end] = s[end], s[beg] beg += 1 end -= 1

 

 

 


最新回复(0)