问题描述
思路解析
- 每当字符达到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--;}}
}