344.反转字符串
- 题目描述
- 解题思路
这是字符串专题的第一题
在之前反转链表的题目中,我们使用了双指针法来进行反转链表
这道题同样的,也使用双指针,对于字符串的反转,比链表更为简单
因为字符串本质上是一种数组,所以元素在内存中的分步是连续的,这就决定了反转链表和反转字符串方式上还是有所差异的
对于字符串,我们定义两个指针,left指针指向从字符串起始位置,right指针从字符串末尾位置,两个指针同时向中间移动,并交换元素(用一个temp中间变量来记录)
如下图所示
- 代码
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--;
}
}