1. 程式人生 > >LintCode 8. 旋轉字符串

LintCode 8. 旋轉字符串

長度 一位 clas abc ret pan ota 挑戰 style

題目:給定一個字符串和一個偏移量,根據偏移量旋轉字符串(從左向右旋轉)。

樣例

對於字符串 "abcdefg".

offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑戰

在數組上原地旋轉,使用O(1)的額外空間

解:先對offset處理,看是否超出字符串長度(offset=offset%len)。每次循環把最後一個字符取出來,然後把前面所有的字符往後挪一個位置,再將剛剛取出的那一個字符放回頭部,循環處理後的offset次。

class
Solution { public: /* * @param str: An array of char * @param offset: An integer * @return: nothing */ void rotateString(string &str, int offset) { // write your code here int temp; int len=str.size(); if(len==0) return; offset
=offset%len;//offset處理 for(int i=0;i<offset;i++) { temp=str[len-1];//取出最後一個字符 for(int j=len-1;j>=1;j--) { str[j]=str[j-1];//前面所有字符往後挪一位 } str[0]=temp;//放回頭部 } } };

LintCode 8. 旋轉字符串