lintcode:旋转字符串

来源:互联网 发布:mac 数据库管理工具 编辑:程序博客网 时间:2024/04/29 01:35

题目

class Solution:    # @param s: a list of char    # @param offset: an integer     # @return: nothing    def rotateString(self, s, offset):        # write you code here       # 198ms        if not s:return s       n = len(s)       offset = offset % n       if not s:return s       for i in range(offset):           t = s.pop()           s.insert(0,t)       # 189ms 分别赋值       if not s:return s       n = len(s)       offset = offset % n       if not offset:return s       temp_pre = s[-offset:]       temp_las = s[0:n-offset]       m = len(temp_pre)       for i in range(len(temp_pre)):           s[i] = temp_pre[i]       for i in range(len(temp_pre), n):           s[i] = temp_las[i - m]       # 206ms  字符串 * 2       if not s:return s       n = len(s)       offset = offset%n       if not offset:return s       temp = s*2       for i in range(n):           s[i] = temp[n-offset+i]       # 198ms 互换位置          if not s: return s       n = len(s)       offset = offset % n       if not offset:return s       s[0:n-offset], s[-offset:] = s[-offset:], s[0:n-offset]       # 226ms 三次反转       if not s:return s       n = len(s)       offset = offset % n       if not offset:return s       s[0:n-offset] = reversed(s[0:n-offset])       s[-offset:] = reversed(s[-offset:])       s[::] = reversed(s)