我遇到了一个简单的(如我所想的)旋转字符串练习:
将字符串旋转K个字符意味着将这些字符从开头剪切并转移到结尾。如果 K 为负数,则相反,字符应从末尾转移到开头。
我立即发明了使用两个子字符串连接的解决方案。但是,我发现了以下补充:
如果您想要更严峻的挑战,我们鼓励您“就地”进行轮换
任务来自这里- 确保这不是我的大学作业等
我看不到任何简单的方法来做到这一点(我想应该有 O(N) 算法)。如果我将第 0 个字符复制到临时变量并将第 K 个字符复制到它的位置,然后将第 2K 个字符复制到第 K 个的位置等等 - 如果 K 和字符串长度是互质的,我将成功。我想我可以管理其他 Ks 添加外部循环以重复从第 1 个字符到第 2 个字符的过程 - 我认为最多 GCD(K, strlen(S))
但它看起来太笨拙了。