首页 > 其他 > 详细

实现一个函数,可以左旋字符串中的k个字符。

时间:2019-04-26 10:33:04      阅读:114      评论:0      收藏:0      [点我收藏+]
题目:实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB

方法一:直接旋转
void left_move(chararr, int k)//左旋字符串
{
char tmp = 0;
char
p = arr;
while (k!=0)
{
tmp =p;
while (
(p+1) != ‘\0‘)
{
p = (p + 1);
p++;
}
*p = tmp;
k--;
}
}

方法二:
void left_move2(char*arr, int k)//更优解法
//要旋转三次分三步abcdef==》defabc
//1.先旋转前面k个==》cbadef
//2.再转后面的剩余部分==》cbafed
//3.整体旋转==》defabc
{
int len = strlen(arr);
void Reverse(left, right);
Reverse(arr, arr + k - 1);
Reverse(arr + k, arr + len - 1);
Reverse(arr, arr + len - 1);
}

void Reverse(charleft, charright)
{
char tmp = 0;
while (left < right)
{
tmp = left;
left = right;
right = tmp;
left++;
right--;
}
}

int main()
{
int k = 2;
char arr[] = "abcd";
int len = strlen(arr);
/left_move(arr, 2);/
int left = arr;
int right = arr + len - 1;
left_move2(arr, k);
printf("%s", arr);

system("pause");
return 0;

}

实现一个函数,可以左旋字符串中的k个字符。

原文:https://blog.51cto.com/14239789/2384653

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!