字符串循环右移n位 java
时间: 2024-10-31 22:05:04 浏览: 12
在 Java 中,你可以通过位运算(尤其是异或(XOR)操作)来实现字符串的循环右移 n 位。这是因为异或操作对于非零数字有以下特性:任何数与0异或都是原数,任何数与自身异或结果为0。利用这个性质,可以将字符数组中的每个字符与一个固定的值(通常是 n 的ASCII码对应的值)连续异或,达到右移的效果。
下面是一个简单的示例函数,它接受一个字符串和位移量 n:
```java
public String cyclicShiftRight(String str, int n) {
if (str == null || str.isEmpty() || n < 0) {
return str;
}
char[] chars = str.toCharArray();
char rotateValue = (char) (n % chars.length); // 只需对字符串长度取模,因为超过部分会自动回绕
for (int i = 0; i < chars.length; ++i) {
chars[i] ^= rotateValue;
}
return new String(chars);
}
```
在这个函数中,`^` 表示异或操作。例如,如果 `n=3` 和字符串是 "abc",那么经过一次右移后,"a" 就会变成 "c"(因为 'a' XOR 'c' = 'a'),"b" 成为 "a"('b' XOR 'a' = 'b'),"c" 成为 "b"('c' XOR 'b' = 'c')。
阅读全文