#include <iostream>
using namespace std;
/*定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。
要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。*/
void Reverse(char*begin,char*end)
{
if(begin==NULL||end==NULL)
return;
while(begin<end)
{
char temp=*begin;
*begin=*end;
*end=temp;
begin++;end--;
}
}
void LeftRotateString(char*str,int n)
{
if(str==NULL||n<=0)
return ;
int length=0;
while(*str!=""\0"")
length++;
cout<<length;
if(length>0&&n>0&&n<length)
{
Reverse(str,str+n-1);
Reverse(str+n,str+length-1);
Reverse(str,str+length-1);
}
}
int main()
{
char str[]="abcdefg";
LeftRotateString(str,2);
cout<<str<<endl;
system("pause");
return 0;
}
为什么没有结果 哪里出错了 |
|
| 20分 |
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。 |