/*********************************************************************
题目二:字符串的左旋转操作是把字符串前面的若干个字符转移字符串的尾部。
请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数
字2,该函数将返回左旋转2位得到的结果"cdefgab"。
*********************************************************************/
#include<stdio.h>
#include<string.h>
void reverse(char* pBegin, char* pEnd)
{
if(pBegin == NULL || pEnd == NULL)
return;
while(pBegin<pEnd)
{
char chTemp = *pBegin;
*pBegin = *pEnd;
*pEnd = chTemp;
++pBegin;
--pEnd;
}
}
char* leftRotateString(char* str, int n)
{
if(str==NULL || n<=0)
return str;
int nLength = static_cast<int>(strlen(str));
if(nLength > 0 && n<=nLength)
{
char* pBegin1 = str;
char* pEnd1 = str + n - 1;
char* pBegin2 = str + n;
char* pEnd2 = str + nLength - 1;
reverse(pBegin1,pEnd1);
reverse(pBegin2,pEnd2);
reverse(pBegin1,pEnd2);
}
return str;
}
void test()
{
char str[] = "abcdefg";
leftRotateString(str,2);
printf("%s\n",str);
}
int main()
{
test();
return 0;
}
==参考剑指offer
左旋转字符串
最新推荐文章于 2024-02-03 18:49:27 发布