首页 > 其他 > 详细

小技巧----“三步翻转法”

时间:2016-06-02 14:10:55      阅读:77      评论:0      收藏:0      [点我收藏+]

例:实现字符串左移函数,比如"abcdefghi"循环左移3位就是”defghiabc".技术分享




#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>

void revers(char *left,char *right)                      //翻转函数,left代表起始位置,right代表结束位置
{
	assert(left);
	assert(right);
	char tmp = 0;
	while (left < right)
	{
		tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void leftLoopMove(char *pStr, unsigned short steps)
{
	assert(pStr);
	int len = strlen(pStr);                   
	steps = steps%len;                                    //这样可以处理steps不合法的情况
	revers(pStr,pStr+steps-1);                            //首先翻转前steps个字符
	revers(pStr + steps, pStr + len - 1);                 //再翻转剩下的字符
	revers(pStr, pStr + len - 1);                         //再将整体翻转
} 
int main()
{
	char arr[50] = { 0 };
	unsigned short steps = 0;               //要右移的个数
	scanf("%s%hd",arr,&steps);
	leftLoopMove(arr,steps);
	printf("%s\n", arr);
	system("pause");
	return 0;
}


小技巧----“三步翻转法”

原文:http://blog.csdn.net/lf_2016/article/details/51549574

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