欢迎访问宙启技术站
智能推送

leetCode 344. Reverse String 字符串

发布时间:2023-05-17 15:30:49

题目描述

编写一个函数,将输入的字符串反转过来。

示例:

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

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

输入:["H","a","n","n","a","h"]

输出:["h","a","n","n","a","H"]

解题思路

可以使用双指针的方法,从两端向中间遍历,将两个指针所指的元素进行交换,直到两个指针相遇。

具体步骤如下:

定义两个指针,一个指向字符串的 个元素,另一个指向最后一个元素;

交换两个指针所指向的元素,同时将指针向中间移动;

重复执行步骤2,直到两个指针相遇为止。

代码实现

Java 代码

class Solution {

    public void reverseString(char[] s) {

        int left = 0;

        int right = s.length - 1;

        while(left < right){

            char temp = s[left];

            s[left] = s[right];

            s[right] = temp;

            left++;

            right--;

        }

    }

}

Python 代码

class Solution:

    def reverseString(self, s: List[str]) -> None:

        """

        Do not return anything, modify s in-place instead.

        """

        left, right = 0, len(s) - 1

        while left < right:

            s[left], s[right] = s[right], s[left]

            left += 1

            right -= 1

复杂度分析

时间复杂度:O(n),其中 n 是字符数组的长度。遍历数组一次,每个元素最多交换一次位置。

空间复杂度:O(1),只使用常数级别的额外空间。