方法一:双指针
首先将 l 指向字符数组首元素,r 指向字符数组的尾元素。当 l < r 左指针向右移一位,右指针向左移一位。若 l >= r 反转结束,返回数组就可得到所需结果。
代码如下:
class Solution {
public void reverseString(char[] s) {
int n = s.length;
for(int l = 0 , r = n - 1;l<r;l++,r--)
{
char temp = s[l];
s[l]=s[r];
s[r]=temp;
}
}
}
方法二:递归
利用反转函数(reverse)进行反转,递归反转其实就是从原链表的第一个存数据的结点开始,依次递归调用反转每一个结点,直到把最后一个结点反转完毕,整个链表就反转完毕。
class Solution {
char temp = 0;
public void reverseString(char[] s) {
reverse(s,0,s.length-1);
}
public void reverse(char[]s,int l,int r)
{
if(l>=r)
{
return;
}
temp = s[l];
s[l] = s[r];
s[r] = temp;
reverse(s,l+1,r-1);
}
}
补充:public void reverse():对整个链表反转