058. 左旋转字符串

剑指 Offer II 058. 左旋转字符串 #

题目 #

  • 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
  • 请定义一个函数实现字符串左旋转操作的功能。
  • 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"

思路 #

三次翻转 #

代码 #

三次翻转 #

class Solution {
    public void swap(char[] charArray, int i, int j) {
        char temp = charArray[i];
        charArray[i] = charArray[j];
        charArray[j] = temp;
    }
    public String reverseLeftWords(String s, int n) {
        char[] charArray = s.toCharArray();
        for (int i = 0, j = charArray.length - 1; i < j; i++, j--) swap(charArray, i, j);
        for (int i = 0, j = charArray.length - n - 1; i < j; i++, j--) swap(charArray, i, j);
        for (int i = charArray.length - n, j = charArray.length - 1; i < j; i++, j--) swap(charArray, i, j);
        return String.valueOf(charArray);
    }
}