给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
 

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

用到的api

 

541. 反转字符串 II_其他

 

 

class Solution {
    public String reverseStr(String s, int k) {
        /**
        就找到开始和结束  双指针翻转机就行
         */
         char [] chars=s.toCharArray();

         for(int i=0;i<chars.length;i+=2*k){//起始下标以2倍增长  0   2k 4k 
         //起始 结束下标
            int left=i; int right=0;
            if(chars.length-left<k){
                //left到末尾的距离小于k 剩余的都翻转
                 right=chars.length-1;
            }
            else {
                //正常 翻转k个  从left->right
                 right=left+k-1;
            }
           
            
            //开始交换
            while(left<right){
                char temp=chars[left];
                chars[left]=chars[right];
                chars[right]=temp;
                left++;
                right--;
            }
          
         
    }
      return new String(chars);
    }
}