左旋字符串

博客内容介绍了如何实现字符串左旋k个字符的操作,分别提供了三种方法:1) 循环前移字符,通过保存第一个字符并依次前移实现;2) 逆置法,通过两次局部逆置和一次整体逆置达到左旋目的;3) 双倍穷举法,构造双倍字符串后按需求输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:实现字符串左旋k个字符,如“abcdef”左旋一个字符,变为“bcdefa”,左旋两个字符,变为“cdefab”。

分析:首先需考虑左旋的字符个数与字符串的长度之间的关系,在本题中,字符串长度为6,如果k为7,则相当

于左旋一个字符,所以,要对k进行处理,得到有效的旋转次数。

1,方法一(循环前移字符)

分析:

 旋转k个字符,首先我们会想到先旋转一个字符,然后在对k进行循环,实现旋转k个字符。所以,接下来

要解决的就是如何实现一个字符的左旋。

 可以观察到,左旋一个字符,是将后一个字符依次前移,取代前一个字符,而最初的第一个字符取代最后

一个字符。这样一次左旋即完成。因为字符前移的过程中会将第一个字符取代,使之失效,所以,首先要将第

一个字符保存起来,再对其他字符一次前移。

代码如下:


2.方法二(逆置法)

分析:

 假如字符串“abcdef”左旋3个字符,变为“defabc”,相当于现将前三个字符进行逆置为cba,再

将其余字符逆置为fed,此时字符串变为“cbafed”,最后将该字符串整体逆置,即为左旋3个字符后的结

果。所以,先进行两次局部逆置,在进行一次整体逆置。

代码如下:


3.方法三(双倍穷举法)

分析:

 先构造双倍字符串,在该题中为"abcdefabcdef",若要左旋3个字符,则从第4个字符开始输出原字

符串长度个字符,即为左旋后的结果。所以,若要左旋k个字符,即从第k+1个字符开始,输出原字符串

长度个字符。该方法可以得到左旋任意个字符后的结果。

代码如下:


主函数代码:


运行结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值