题目描述:给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例:对于字符串 "abcdefg".
offset=0 => "abcdefg"offset=1 => "gabcdef"
offset=2 => "fgabcde"offset=3 => "efgabcd"
这种旋转的问题,基本步骤是三步:
1. 找到偏移量对字符串的余数,这是实际需要处理的偏移量
2. 反转整个字符串
3. 按照偏移量,将数组分成两部分,分别反转
拿“12345”这个序列来说,我设置偏移量是8:
1. 8 % 5 = 3, 3是我实际需要处理的偏移量;
2. 反转整个字符串:“54321”
3. 按照偏移量将字符串切分,并分别反转->“34512”;
这就完成了,考虑到python语言本身的反转函数对这道题不是那么适用,所以,可以自己写一个反转函数,然后按照上面的步骤调用这个函数即可。代码如下:
class Solution:
# @param s: a list of char
# @param offset: an integer
# @return: nothing
def rotateString(self, s, offset):
if len(s) == 0:
return s
offset = offset % len(s)
self.reverse(s, 0 , len(s) - 1)
self.reverse(s, 0, offset - 1)
self.reverse(s, offset, len(s) - 1)
return s
def reverse(self, s, begin, end):
left, right = begin, end
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
# write you code here