问题描述:
把字符串的前几个字符移到字符串后面叫做字符串的左旋操作。例如将“abcdef”做左旋转2位就可以得到“cdefab”。要求对长度为n的字符串操作的时间复杂度为o(n),空间复杂度为o(1);
思路一:暴力移位法
#include "stdafx.h"
#include"stdio.h"
//左移一个字符
void leftshiftone(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 leftshift(char *s,int n,int m)
{
while(m--)
{
leftshiftone(s,n);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
//初始化字符串
char s[]="abcdef";
//旋转之前
for(int i=0;i<6;i++)
{
printf("%c",s[i]);
}
printf("\n");
//做左移操作
leftshift(s,6,2);
//输出
for(int i=0;i<6;i++)
{
printf("%c",s[i]);
}
printf("\n");
return 0;
}运行结果:
本文介绍了一种实现字符串左旋操作的方法,即通过多次左移一个字符来完成指定次数的左旋,并提供了完整的C语言实现代码示例。
724

被折叠的 条评论
为什么被折叠?



