Advertisement

对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)

还没有任何评论哟~