LeetCode

链接

541. Reverse String II

题意

翻转字符串II
给定一个字符串和k,k表示要翻转前k个字母,然后跳过k个字母,再翻转k个字母...以此类推。当字符个数少于2k但大于等于k个时,翻转前k个字符并且剩余的保持不变。

思路

循环调用翻转字符串的方法即可。

代码

public class Solution {
    public String reverseStr(String s, int k) {
        char[] arr = s.toCharArray();
        int start = 0;
        int end = k - 1;
        // 开始下标越界说明已经完成操作
        while (start < s.length()) {     
            reverse(arr, start, start + k - 1);
            // 不断调整位置
            start += 2 * k;
        }
        return new String(arr);
    }
    
    public static void reverse(char[] arr, int start, int end) {
        // 若end越界了,直接置为最后一个下标
        if (end >= arr.length) end = arr.length - 1;
        while (start < end) {
            char t = arr[start];
            arr[start] = arr[end];
            arr[end] = t;
            start++;
            end--;
        }
    }
}
原文地址:https://www.cnblogs.com/zyoung/p/6899904.html