java如何旋转字符
旋转字符的方法
在Java中旋转字符可以通过多种方式实现,具体取决于旋转的定义(如左旋、右旋或自定义角度)。以下是几种常见的方法:
使用字符串切片和拼接
对于字符串的旋转(如左旋或右旋),可以通过切片和拼接实现:

public static String rotateString(String str, int offset) {
if (str == null || str.isEmpty()) return str;
offset = offset % str.length();
return str.substring(offset) + str.substring(0, offset);
}
使用字符数组
通过字符数组实现旋转,可以更灵活地操作单个字符:

public static String rotateChars(String str, int offset) {
char[] chars = str.toCharArray();
offset = offset % chars.length;
reverse(chars, 0, offset - 1);
reverse(chars, offset, chars.length - 1);
reverse(chars, 0, chars.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--;
}
}
使用ASCII码旋转
如果需要基于ASCII码旋转字符(如凯撒密码),可以通过调整字符的ASCII值实现:
public static String rotateASCII(String str, int shift) {
StringBuilder result = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isLetter(c)) {
char base = Character.isLowerCase(c) ? 'a' : 'A';
c = (char)(((c - base + shift) % 26 + 26) % 26 + base);
}
result.append(c);
}
return result.toString();
}
使用图形旋转(如2D字符矩阵)
对于二维字符矩阵的旋转(如90度旋转),可以转置后反转行:
public static char[][] rotateMatrix(char[][] matrix) {
int n = matrix.length;
char[][] rotated = new char[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
rotated[j][n - 1 - i] = matrix[i][j];
}
}
return rotated;
}
注意事项
- 字符串旋转时需处理偏移量超过字符串长度的情况。
- 字符数组旋转时注意边界条件。
- ASCII旋转需区分大小写并处理负数偏移。
- 矩阵旋转需确保输入为方阵。






