题目:把字符串前n个字符移到字符串的尾部。
如:abcdef左旋转2位得到字符串cdefab;
分析得:左旋转其实为3个反转操作!
代码如下:(主要const的使用)
const在*左边修饰指针指向的内容,即内容不能修改
const在*右边修饰指针本身,即指针本身不能修改
即//左内容右本身
char* ReverseString(char * const pStart, char * const pEnd)//反转字符串
{//const不修改指针
//左内容右本身
char *pS=pStart;
char *pE=pEnd;
if(pS != NULL && pE != NULL)
{
char temp;
while(pS <= pE)
{
temp=*pS;
*pS=*pE;
*pE=temp;
pS++;
pE--;
}
}
return pStart;
}
char* ReverseLeftNumChar(char * const pStart, unsigned int n)
{//const
unsigned int iLen=strlen(pStart);
if(n>0 && iLen>0 && iLen>n)
{
ReverseString(pStart,pStart+n-1);
ReverseString(pStart+n,pStart+iLen-1);
ReverseString(pStart,pStart+iLen-1);
}
return pStart;
}