字符串简单1 种解法

#K55右旋字符串

把字符串最右侧 k 个字符移动到最前面,保持两段内部相对顺序。

#字符串#双指针#卡码网

解题主线

01

整体反转后,再分别反转前 k 段和后 n-k 段,即可完成右旋。

解法 1三次反转

先反转全部字符,再恢复旋转后两段各自的内部顺序。

时间复杂度

O(n)

空间复杂度

O(n),字符数组与返回字符串

K55. 右旋字符串 · 三次反转
final class Solution {
    public String rightRotate(String s, int k) {
        if (s.isEmpty()) return s;
        char[] chars = s.toCharArray();
        k = Math.floorMod(k, chars.length);
        reverse(chars, 0, chars.length - 1);
        reverse(chars, 0, k - 1);
        reverse(chars, k, chars.length - 1);
        return new String(chars);
    }

    private void reverse(char[] chars, int left, int right) {
        while (left < right) {
            char temporary = chars[left];
            chars[left++] = chars[right];
            chars[right--] = temporary;
        }
    }
}

先反转全部字符,再恢复旋转后两段各自的内部顺序。

边界与易错点

  • k 应先对字符串长度取模;空字符串必须在取模前直接返回。
  • 这是 KamaCoder 55,不应映射成 LeetCode 题号。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

easy/QK55_Krotate.java