描述
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
您在真实的面试中是否遇到过这个题?
是
样例
对于字符串 "abcdefg"
.
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战
在数组上原地旋转,使用O(1)的额外空间
这一题的话如果不考虑只使用O(1)的额外空间将会非常简单,直接str+str把自己连起来然后根据offset截取一下就行了。
如果只用O(1)额外空间的话,就要有一个巧妙的思路了,reverse三次这个字符串可以达到这个效果:
class Solution:
"""
@param str: An array of char
@param offset: An integer
@return: nothing
"""
def rotateString(self, str, offset):
# write your code here
def reverse(s,start,end):
while(start<end):
temp=s[start]
s[start]=s[end]
s[end]=temp
start+=1
end-=1
if(str==None or len(str)==0): return str
length=len(str)
offset=offset%len(str)
reverse(str,0,length-offset-1)
reverse(str,length-offset,length-1)
reverse(str,0,length-1)
return str
s = Solution()
print(s.rotateString(['a','b','c'],1))