13力扣题做题笔记及复盘--541. 反转字符串II(双指针,字符串)

541. 反转字符串 II - 力扣(LeetCode)

题外话

这道题一开始我纠结比较久,虽然是容易题,也证明了我菜,但没关系,我要想办法拿下。这道题可以理解成模拟,实现题目中规定的反转规则就可以了。

思路

1、反转函数

2、判断反转区间:反转函数就需要到双指针,双指针的位置要把握好

起始指针:0、i+2k

结束指针:i+k-1、且小于数组最大小标(在size内,i+k-1;在size外,end=size-1)

代码

class Solution {
    public String reverseStr(String s, int k) {
        char[] arr = s.toCharArray();
        int size = s.length();
        for(int i=0;i<size;i+=2*k){
            int end = i+k-1;
            //在size内
            if(end<size-1){
                reverMethod(arr,i,end);
            }else{
                //在size外
                reverMethod(arr,i,size-1);
            }
        }

        return new String(arr);
    }
    //反转函数
    public void reverMethod( char[] arr,int start,int end){
            while(start<end){
                char temp = arr[start];
                arr[start] =  arr[end];
                arr[end] = temp;
                end--;
                start++;
            }
    }
}

总结:

这道题主要在如何划分区间,然后在区间内反转

将字符串分成字符数组:

char[] item = s.toCharArray();

 

posted @ 2022-05-25 17:11  jason饼干大怪兽  阅读(24)  评论(0)    收藏  举报