【題目描述】
Given a string and an offset, rotate string by offset. (rotate from left to right)
給定一個字符串和一個偏移量,根據偏移量旋轉字符串(從左向右旋轉)
【題目鏈接】
http://www.lintcode.com/en/problem/rotate-string/
【題目解析】
常見的翻轉法應用題,仔細觀察規律可知翻轉的分割點在從數組末尾數起的offset位置。先翻轉前半部分,隨後翻轉後半部分,最後整體翻轉。
源碼分析:異常處理,A爲空或者其長度爲0;offset可能超出A的大小,應模len後再用;三步翻轉法。Python 雖沒有提供字符串的翻轉,但用 slice 非常容易實現,非常 Pythonic!
複雜度分析:翻轉一次時間複雜度近似爲 O(n)O(n)O(n), 原地交換,空間複雜度爲 O(1)O(1)O(1). 總共翻轉3次,總的時間複雜度爲 O(n)O(n)O(n), 空間複雜度爲 O(1)O(1)O(1).
【答案鏈接】
http://www.jiuzhang.com/solution/rotate-string/