题目描述:
给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
您在真实的面试中是否遇到过这个题?
Yes
样例
对于字符串 "abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战
在数组上原地旋转,使用O(1)的额外空间
难点分析
特殊情况:①字符串为""的情况②offset=0的情况③offset远大于字符串长度的情况
前两种情况,如果想到了直接return就好。第三种情况难以想到,想到的话也好处理,因为如果偏移量offset为字符串长度的整数倍,那么偏移之后的结果其实就是源字符串,所以真正的偏移量应该为offset%(字符串的长度)。
# -*- coding: utf-8 -*- ''' 题目描述: 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 您在真实的面试中是否遇到过这个题? Yes 样例 对于字符串 "abcdefg". offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde" offset=3 => "efgabcd" 挑战 在数组上原地旋转,使用O(1)的额外空间 难点分析 特殊情况:①字符串为""的情况②offset=0的情况③offset远大于字符串长度的情况 前两种情况,如果想到了直接return就好。第三种情况难以想到,想到的话也好处理,因为如果偏移量offset为字符串长度的整数倍,那么偏移之后的结果其实就是源字符串,所以真正的偏移量应该为offset%(字符串的长度)。 ''' class Solution: # @param s: a list of char # @param offset: an integer # @return: nothing def rotateString(self, s, offset): # write you code here if not offset: return if not s: return n = len(s) offset = offset%n # offset可能大于N,取offset模n的余数 f = n - offset return s[f:n]+s[0:f] ''' # 如果传入是数组 for i in range(offset): t = s.pop() s.insert(0,t) ''' if __name__ == '__main__': str1 = 'abcdefg' sol = Solution() res = sol.rotateString(str1,1) print(res)
输入:gabcdef