【力扣541】反转字符串Java代码解释

2023-12-17 14:29:44

12.16 541. 反转字符串 II

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

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

示例 1:

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

示例 2:

输入:s = "abcd", k = 2
输出:"bacd"

注意:重点读懂题意,每过2K个字符就反转前k个,不足2k就反转全部

class Solution {
    public String reverseStr(String s, int k) {
        char[] arr = s.toCharArray();
        int n = arr.length;
        for(int i = 0; i < n;i += 2 * k){ 
            arr = reverseChar(arr,i,Math.min(i + k ,n) - 1); //核心在这
        }
        return String.valueOf(arr);
    }
    public char[] reverseChar(char[] arr,int start,int end){ //数组反转
         while(start < end){
                char c = arr[start];
                arr[start++] = arr[end];
                arr[end--] = c;
        }
        return arr;
    }
}

文章来源:https://blog.csdn.net/m0_59167353/article/details/135044100
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。