问题描述
思路解析
- 每当字符达到2*k的时候,判断,同时若剩余字符>k,只对前k个进行判断(这是重点)
- 因为字符串是不可变变量,所以将其转化为字符串数组,最后才将结果重新转变为字符串
- 字符串->字符数组 s.toCharArray()
- 字符数组->字符串 new String(arr)
- 将反转的函数单独写出来,便于观察理解
代码
class Solution {
public String reverseStr(String s, int k) {
int n=s.length();
char[] arr= s.toCharArray();
for(int i=0;i<n;i+=2*k){
reverse(arr,i,Math.min(i+k,n)-1);
}
return new String(arr);
}
public void reverse(char[] arr,int left,int right){
while(left<right){
char temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
}