实现字符串右移循环

题目描述请实现字符串右移循环,如“abcdefghi”右移3位变为“defghiabc”.                                                           实现方法   

 1.三步翻转法 

                                                                                                                                                                                                                                                                                        

代码实现如下:

<span style="font-size:24px;color:#666600;">
<span style="font-size:18px;color:#cc33cc;">#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char *left,char* right)
{
	assert(left);
	assert(right);
	while(left<right)
	{
		char tmp=*left;
		*left=*right;
		*right=tmp;
		left++;
		right--;
	}
}
void RightLoopMove(char* pStr,unsigned short steps)
{
	int len = strlen(pStr);
	reverse(pStr,pStr+steps-1);//逆序左串
	reverse(pStr+steps,pStr+len-1);//逆序右串
	reverse(pStr,pStr+len-1);//逆序整个字符串

}

int main()
{
	char arr[]="abcdefghi";
	int sz=sizeof(arr)/sizeof(arr[0]);
	RightLoopMove(arr,3);
	printf("%s\n",arr);
	system("pause");
	return 0;
</span></span>
<span style="font-size:18px;color:#cc33cc;"><span style="font-size:24px;color:#666600;">}</span></span>

2.暴力翻转法:



<pre name="code" class="cpp"><pre name="code" class="cpp">
<pre name="code" class="cpp"><span style="font-size:18px;color:#cc33cc;">//#include<stdio.h>
//#include<assert.h>
//#include<string.h>
//void RightLoopMove(char* pStr,unsigned short steps)
//{
//	int len=strlen(pStr);
//	int cou=0;
//	assert(pStr);
//	/*steps=steps%len;*/
//	while(steps--)
//	{
//		char tmp=pStr[0];
//		for(cou=0;cou<len-1;cou++)
//		{
//			pStr[cou]=pStr[cou+1];//
//		}
//		pStr[cou]=tmp;
//	}
//}
//
//int main()
//{
//	char arr[]="abcdefghi";
//	RightLoopMove(arr,3);
//	printf("%s\n",arr);
//	system("pause");
//	return 0; 
//}
</span>


 
 
 

运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值