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

题目:

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 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(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

 

 

 

你可能感兴趣的:(LeetCode-344 反转字符串---Python代码实现及详解)