对于字符串 "abcdefg"
.
以上是LintCode上给出的样例。offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde"
offset=3 => "efgabcd"
对于此问题,我分解成了三个部分。
分别是判断,复制,赋值。
void rotateString(string &str, int offset) {
if(offset == str.size() || str.size() == 0)
{
return;
} // 第一步,判读string长度以及偏移量,如果旋转后与原样例相同,则直接返回。
while(offset > str.size())
{
offset = offset - str.size();
} // 如果偏移量超出string长度,则进行减小。
string strcopy;
for(int i = 0;i < str.size();i++)
{
strcopy[i] = str[i];
}// 复制
for(int i = 0;i < str.size();i++)
{
str[offset] = strcopy[i];
offset++;
if(offset >= str.size())
{
offset -= str.size();
}// 最后是赋值。
}
}
};