旋转字符串
发布时间:2023-04-12 17:56:22 307 相关标签:
题目内容:
实现一个函数,可以左旋字符串中的k个字符。
例如·:ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
一.方法一
#include
#include
//三步反转法
//abcdef
//ab cdef 先切开
//ba fedc 两部分都反转
//bafedc 分开的两部分再组合在一起
//cdefab 再倒序
void reverse(char *left,char *right)
{
char tmp=*left;
*left=*right;
*right=tmp;
left++;
right--;
}
void left_move(char arr[],int k)
{
int len=strlen(arr);
reverse(arr,arr+k);//首先逆序前两个字符(左边的)
reverse(arr+k+1,arr+len-1);//再逆序剩下的字符(右边的)
reverse(arr,arr+len-1);//再将整个字符串逆序
}
int main()
{
char arr[]="abcdef";
left_move(arr,2);
printf("%s\n",arr);
return 0;
}
二.方法二
#include
#include
void left_move(char arr[],int k)
{
int i=0;
int len=strlen(arr);
for(i=0;i {
//1.创建一个变量
char tmp=arr[0];
//2.开始将字符一个一个的向前挪
int j=0;
for(j=0;j {
arr[j]=arr[j+1];
}
//3.将原来的第一个字符放到最后一个去
arr[len-1]=tmp;
}
}
int main()
{
char arr[]="abcdef";
left_move(arr,2);
printf("%s\n",arr);
return 0;
}
文章来源: https://blog.51cto.com/u_15806064/6002089
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报