LeetCode344.反转字符串

344.反转字符串

  • 题目描述

LeetCode344.反转字符串_第1张图片

  • 解题思路

这是字符串专题的第一题

在之前反转链表的题目中,我们使用了双指针法来进行反转链表

这道题同样的,也使用双指针,对于字符串的反转,比链表更为简单

因为字符串本质上是一种数组,所以元素在内存中的分步是连续的,这就决定了反转链表和反转字符串方式上还是有所差异的

对于字符串,我们定义两个指针,left指针指向从字符串起始位置,right指针从字符串末尾位置,两个指针同时向中间移动,并交换元素(用一个temp中间变量来记录)

如下图所示

LeetCode344.反转字符串_第2张图片

  • 代码
    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--;
        }
    }

你可能感兴趣的:(算法实战,算法,java,力扣,数据结构,leetcode)