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();