字符串的旋转
题目描述:给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部。
void LeftShitOne(char*s,int n)
{
char t=s[0];
for(int i=1;i<n;i++)
{
s[i-1]=s[i];
}
s[n-1]=t;
}
void LeftRotateString(char*s,int n,int m)
{
while(m--)
{
LeftShitOne(s,n);
}
}
三步移位
操作:
1 将原字符串分为X和Y两部分
2 将X的所有字符串反转,在将Y的所有字符串也反转
3 将所得的反转结果在给予整体反转,即整体反转
void ReverseString(char*s,int from,int to)
{
whlie(from<to)
{
char t=s[from];
s[from++]=s[to];
s[to--]=t;
}
}
void LeftRotateString(char*s,int n,int m)
{
//若要左移动大于n位,那么与%n是等阶的
m%=n;
ReverseString(s,0,m-1);
ReverseString(s,m,n-1);
ReverseString(s,0,n-1);
}

浙公网安备 33010602011771号