bar*_*ley 10
给定一个str具有长度length和旋转量的字符串n
向左旋转相当于
reverse(str, 0, n);
reverse(str, n, length);
reverse(str, 0, length);
Run Code Online (Sandbox Code Playgroud)
向右旋转相当于
reverse(str, 0, length - n);
reverse(str, length - n, length);
reverse(str, 0, length);
Run Code Online (Sandbox Code Playgroud)
现在你只需要一个反向功能.
更新:我想到了如何使用mod来让你总是按照正确的方向旋转n.
例如
int mod = n % length;
if (mod != 0) { //if 0, don't rotate
reverse(str, 0, mod);
reverse(str, mod, length);
reverse(str, 0, length);
}
Run Code Online (Sandbox Code Playgroud)
经历各种情况
如果n == 5且长度= 10,则mod = 5
如果n == 16且长度= 10,则mod = 6 - 向左旋转16 =向左旋转6
如果n == 0且长度=任何东西,mod = 0
如果n == -1且长度= 10,则mod = 9 - 向右旋转1与向左旋转9相同
如果n == - 15且长度= 9,mod = 3 - 向右旋转15与向左旋转3相同