leetCode 344. Reverse String 字符串
题目描述
编写一个函数,将输入的字符串反转过来。
示例:
输入:["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),只使用常数级别的额外空间。
