📜  字符串的左旋转和右旋转(1)

📅  最后修改于: 2023-12-03 15:09:22.016000             🧑  作者: Mango

字符串的左旋转和右旋转

在字符串操作中,有时候需要将字符串中的一部分数据进行旋转,这时候就需要使用到字符串的左旋转和右旋转。字符串的左旋转和右旋转是指将字符串中的一部分字符移到字符串的开头或者结尾。

左旋转

字符串的左旋转就是将字符串的前n个字符移到字符串的末尾。例如,若字符串为"abcdef",左旋转2个字符后的结果为"cdefab"。

下面是一个Java的字符串左旋转的示例代码:

public static String leftRotateString(String str, int n) {
    if (str == null || str.length() == 0) {
        return str;
    }
    char[] chars = str.toCharArray();
    reverse(chars, 0, n - 1);
    reverse(chars, n, str.length() - 1);
    reverse(chars, 0, str.length() - 1);
    return new String(chars);
}

private static void reverse(char[] chars, int start, int end) {
    while (start < end) {
        char temp = chars[start];
        chars[start] = chars[end];
        chars[end] = temp;
        start++;
        end--;
    }
}
右旋转

字符串的右旋转就是将字符串的后n个字符移到字符串的开头。例如,若字符串为"abcdef",右旋转2个字符后的结果为"efabcd"。

下面是一个Java的字符串右旋转的示例代码:

public static String rightRotateString(String str, int n) {
    if (str == null || str.length() == 0) {
        return str;
    }
    char[] chars = str.toCharArray();
    reverse(chars, str.length() - n, str.length() - 1);
    reverse(chars, 0, str.length() - n - 1);
    reverse(chars, 0, str.length() - 1);
    return new String(chars);
}

private static void reverse(char[] chars, int start, int end) {
    while (start < end) {
        char temp = chars[start];
        chars[start] = chars[end];
        chars[end] = temp;
        start++;
        end--;
    }
}

需要注意的是,字符串的左旋转和右旋转都需要进行三次翻转操作,才能达到目的。

以上是关于字符串的左旋转和右旋转的介绍。在实际工作中,如果遇到字符串旋转的问题,可以借鉴上述代码片段来解决。