左旋转字符串

定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
#include 
using namespace std;

void Reverse(char* lptr,char* rptr)//字符串逆序函数
{ 
	while(lptr < rptr)
	{ 
		*lptr=*lptr ^ *rptr;
		*rptr=*lptr ^ *rptr;
		*lptr=*lptr++ ^ *rptr--;	
	} 	
} 
void LeftRotateString(char* str,int n)
{
	Reverse(str,str+strlen(str)-1);	//字符串str整体逆序"abcdef" -> "fedcba"
	Reverse(str,str+strlen(str)-n-1);//字符串str前半部分逆序"fedcba" -> "cdefba"
	Reverse(str+strlen(str)-n,str+strlen(str)-1);//str后半部分逆序"cdefba" -> "cdefab"	
}
int main()
{
	char str[]="abcdef";
	LeftRotateString(str,2);	
	cout<

你可能感兴趣的:(左旋转字符串)