【LeetCode】541. 反转字符串 II(错题2刷)

【LeetCode】541. 反转字符串 II(错题2刷),第1张

【LeetCode】541. 反转字符串 II(错题2刷)

  • 思路
    这道题首先要明确不同的情况做不同的 *** 作,(1)当少于k全部反转;(2)当大于k小于2k,反转前k个;(3)当等于2k,反转前k个。
    整体思路就是用双指针,一个指头,一个指尾然后进行计数。
class Solution {
    void reverse(char[] arr, int start, int end) {
        char temp;
        while (start < end) {
            temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }

    public String reverseStr(String s, int k) {
        int len = s.length();
        char[] arr = s.toCharArray();
        int start = 0, i;
        for (i = 0; i < len; i++) {
            // 等于2k
            if (i - start + 1 == 2 * k) {
                reverse(arr, start, start + k - 1);
                start = i + 1;
            }
        }
        // 小于k
        if (i - start < k) {
            reverse(arr, start, i - 1);
            return new String(arr);
        }
        // 大于k小于2k
        if (i - start < 2 * k) {
            reverse(arr, start, start + k - 1);
            return new String(arr);
        }
        return new String(arr);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存