描述
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例
对于字符串"abcdefg"
。
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战
代码
在数组上原地旋转,使用O(1)的额外空间
class Solution {
public:
/*
* @param str: An array of char
* @param offset: An integer
* @return: nothing
*/
void rotateString(string &str, int offset) {
// write your code here
int len = str.size();
char s[len+5];
int i = 0,j = 0;
if(!len) return; //处理str为空
if(offset > len) //处理偏移量
offset = offset%len;
for(i = 0; str[i] != '\0'; i++) //储存str
s[i] = str[i];
s[i] = '\0';
for(i = len - offset; i < len; i++)
str[j++] = s[i];
for(i = 0; i < len - offset; i++)
str[j++] = s[i];
}
};