对strings进行旋转向量操作
发布时间
阅读量:
阅读量
题目描述
设定一个字符串,需要将字符串起始位置的若干字符迁移至字符串末尾,例如将字符串“abcdef”前两位字符'a'与'b'转移至字符串末尾,从而使得原字符串转换为“cdefab”。请编写一个函数实现该功能,要求对于长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。
例如,对于字符串 abcdef ,若希望将def部分置于abc之前,可按照以下三个步骤完成:
第一步是将原字符串划分为两个子串,即X:abc,Y:def;
接着对X进行反转处理,得到:cba;
随后对Y进行反转处理,得到:fed。
最后将反转后的cbafed再次整体反转,即可获得defabc,从而完成整个操作。
#include <iostream>
#include <string>
using namespace std;
//将字符串s中下标from到to之间(从0开始)的字符反转
bool Reverse(char *s, int from, int to)
{
if (s==NULL||from>=to)
{
return false;
}
while(from<to)
{
全部评论 (0)
还没有任何评论哟~
