LintCode算法题第八题:旋转字符数组
描述:给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转)。
提示:
offset >= 0
s 的长度 >= 0
原地旋转意味着需要在函数中更改字符数组 s。你不需要返回任何东西。
这个算法题我们不需要写任何返回值,只需要在变量s中进行修改即可
这里for循环次数太多会有MemoryError的错误,内存溢出,我们只需要让offset取余于s,求出最少次数再进行遍历,那次数最长也不超过字符串s的长度
for循环中进行旋转操作即可
Python代码:
class Solution:
"""
@param s: An array of char
@param offset: An integer
@return: nothing
"""
def rotate_string(self, s, offset):
# write your code here
if s:
offset%=len(s)
for i in range(offset):
s[0],s[1:]=s[-1],s[:-1]

成绩也蛮不错的~~~
本文介绍如何通过巧妙地利用偏移量对Python代码进行优化,减少`rotate_string`函数中的for循环次数,避免内存溢出,仅对字符数组`s`进行原地旋转,提升算法效率。
478





