简单题8-旋转字符串
2018-05-08 本文已影响15人
Airycode
描述
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
您在真实的面试中是否遇到过这个题? 是
样例
对于字符串 "abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战
在数组上原地旋转,使用O(1)的额外空间
【代码实现】
package 数组和矩阵;
public class Main5 {
public static void main(String[] args) {
String str = "abcdefg";
char[] c = str.toCharArray();
int n = 30;
rotateString(c, n);
}
public static void rotateString(char[] str, int offset) {
// write your code here
if (str == null || str.length == 0)
return;
int size = str.length;
offset %= size;
if (offset == 0)
return;
for (int i = 0; i < offset; i++)
rotate(str);
print(str);
return;
}
private static void print(char[] str) {
for (int i=0;i<str.length;i++) {
System.out.print(str[i]+" ");
}
}
public static void rotate(char[] str) {
char temp = str[str.length - 1];
for (int i = str.length - 1; i > 0; i--)
str[i] = str[i - 1];
str[0] = temp;
return;
}
}