java substring截取字符串_Day43:左旋转字符串

28294696fc18cb49c3d5e3dd2083d968.png

剑指Offer_编程题——左旋转字符串

题目描述:

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

具体要求:

时间限制: C/C++ 1秒,其他语言2秒
空间限制: C/C++32M,其他语言64M

具体实现:

思路一:

直接用暴力法,从开始截取n位,放到字符串后方。我们用java实现该思路:

public 

代码效果图如图所示:

275db50b6660fd20314b1375f859b426.png

此代码可以在牛客网上可以实现,但是我们如果在本地的话测试结果的话即得加上main函数,具体实现如下:

public 

代码测试效果图如下:

3e5e7be9c57babb4580543c18b9cdcb3.png

接下来我们利用java字符串中的substring方法,只要简单的拼接即可,我们可以用java将其实现:

public 

代码效果图如图所示:

bd80d1f849a39743fca172097361df58.png

代码效果测试如下图所示:

73ca29bf717e102423d371749376dee4.png

思路二:

(1)先将左边3个字符串进行翻转:abcXYZdef --> cbaXYZdef

(2)再将右边剩余字符串进行翻转:cbaXYZdef --> cbafedZYX

(3)最后将整个字符串进行翻转: cbafedZYX --> XYZdefabc

接下来我们用java将其实现:

public 

代码效果图如图所示:

befc6234d09a233451b5f3ad2de70e02.png

代码测试结果如下图:

e66d07618c639f7859a3aa04f186d1e7.png

思路三:

我们用python中的.join()方法来实现,减少了代码的量。我们用python实现。

class 

代码效果图如图所示:

36e21c3259f08d3d13fc64424a7e5bf7.png

总结

本道题通过汇编语言的计算指数来考察我们对字符串的理解。我们对本题给出了三种解题思路,首先就是暴力解法,对字符串一一对比,接着优化了思路,就是用java中的substring方法,然后接着简单的连接即可,最后就是通过一种简单的反转即可实现,大大提高了运行速度以及缩短了代码量。因此,我们在做题的时候,应该多次尝试各种方法,扩展自己的思维,写出优质的代码。总之,我们要继续加油,争取早日找到工作,Good Luck!!!

参考文献

[1]白马长枪儒雅将

[2]NeoJoe

[3]DarrenXf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值