Rotate String
题目
Given a string and an offset, rotate string by offset. (rotate from left to right)
Example
Given"abcdefg"
.
offset=0 => "abcdefg"
offset=1 =>"gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
分析:
也是三步翻转法,记得offset可能超过数组大小,记得取模。
解法:
public void rotateString(char[] str, int offset) {
// 判断非空和长度xxx
if (str == null || str.length == 0)
return;
int n = str.length;
offset = offset % str.length;//注意Offset要取模xxx
reverse(str, 0, n - offset - 1);
reverse(str, n - offset, n-1);
reverse(str, 0, n-1);
}
public void reverse(char[] str, int s, int e){
while(s < e){
char temp = str[s];
str[s++] = str[e];
str[e--] = temp;
}
}
Last updated
Was this helpful?