📜  用于字符串左旋转和右旋转的Java程序(1)

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

用于字符串左旋转和右旋转的Java程序

这是一个用于字符串左旋转和右旋转的 Java 程序,可以通过传入一个字符串和旋转次数,输出旋转后的字符串。

功能

该程序提供了以下两个功能:

  • 左旋转
  • 右旋转
左旋转

左旋转是指将字符串中的前 n 个字符移动到字符串的尾部,例如:

输入字符串:"abcd",旋转次数:2
旋转后的字符串:"cdab"
右旋转

右旋转是指将字符串中的后 n 个字符移动到字符串的头部,例如:

输入字符串:"abcd",旋转次数:2
旋转后的字符串:"cdab"
使用方法

在使用该程序时,需要传入两个参数:

  • 要旋转的字符串
  • 旋转次数

程序会根据旋转次数进行左右旋转,最终返回旋转后的字符串。

使用示例:

String str = "abcdefg";
int rotateCount = 2;

String leftRotatedStr = leftRotate(str, rotateCount);
String rightRotatedStr = rightRotate(str, rotateCount);

System.out.println("左旋转后的字符串:" + leftRotatedStr);
System.out.println("右旋转后的字符串:" + rightRotatedStr);
实现代码

以下是该程序的实现代码:

/**
 * 左旋转字符串
 *
 * @param str         要旋转的字符串
 * @param rotateCount 旋转的次数
 * @return 旋转后的字符串
 */
public static String leftRotate(String str, int rotateCount) {
    if (str == null || str.length() == 0) {
        return str;
    }

    char[] charArr = str.toCharArray();
    int length = charArr.length;

    // 处理旋转次数大于字符串长度的情况
    rotateCount = rotateCount % length;

    // 分别翻转前半部分、后半部分、整个字符串
    reverse(charArr, 0, rotateCount - 1);
    reverse(charArr, rotateCount, length - 1);
    reverse(charArr, 0, length - 1);

    return new String(charArr);
}

/**
 * 右旋转字符串
 *
 * @param str         要旋转的字符串
 * @param rotateCount 旋转的次数
 * @return 旋转后的字符串
 */
public static String rightRotate(String str, int rotateCount) {
    if (str == null || str.length() == 0) {
        return str;
    }

    char[] charArr = str.toCharArray();
    int length = charArr.length;

    // 处理旋转次数大于字符串长度的情况
    rotateCount = rotateCount % length;

    // 分别翻转前半部分、后半部分、整个字符串
    reverse(charArr, 0, length - 1 - rotateCount);
    reverse(charArr, length - rotateCount, length - 1);
    reverse(charArr, 0, length - 1);

    return new String(charArr);
}

/**
 * 翻转字符数组的部分内容
 *
 * @param charArr 字符数组
 * @param start   起始位置
 * @param end     结束位置
 */
private static void reverse(char[] charArr, int start, int end) {
    while (start < end) {
        char temp = charArr[start];
        charArr[start] = charArr[end];
        charArr[end] = temp;
        start++;
        end--;
    }
}
总结

该程序提供了字符串左旋转和右旋转的功能,旋转次数可以为任意自然数。在实现上,通过翻转前半部分、后半部分和整个字符串的方式实现了字符串的旋转,同时针对旋转次数大于字符串长度的情况进行了处理。