java数据结构与算法刷题-----LeetCode344. 反转字符串

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

java数据结构与算法刷题-----LeetCode344. 反转字符串_第1张图片

解题思路
  1. 如果是偶数个字符,那么前后两两交换即可。如果是奇数个字符,那么也一样前后两两交换,但是最中间的那个没必要交换。
  2. 所以可以采用双指针,left指向左边,right指向右边,然后交换即可。
代码

java数据结构与算法刷题-----LeetCode344. 反转字符串_第2张图片

class Solution {
    public void reverseString(char[] s) {
        int left = 0, right = s.length-1;//双指针
        while(left<right){//如果left和right指向同一个元素,就不用交换位置了
            swap(s,left++,right--);//如果left和right不是同一个,就交换他俩的位置
        }
    }
    //交换
    public void swap(char[] s,int left,int right){
            s[left]^=s[right];
            s[right]^=s[left];
            s[left]^=s[right];
    }
}

你可能感兴趣的:(算法,java,leetcode,算法)