lintcode刷題筆記day4
阿新 • • 發佈:2018-12-18
描述 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 您在真實的面試中是否遇到過這個題? 是 題目糾錯 樣例 對於字串 “abcdefg”.
offset=0 => “abcdefg” offset=1 => “gabcdef” offset=2 => “fgabcde” offset=3 => “efgabcd” 挑戰 在陣列上原地旋轉,使用O(1)的額外空間
class Solution { public: /** * @param str: An array of char * @param offset: An integer * @return: nothing */ void rotateString(string &str, int offset) { string tmp; string::iterator i; int len=str.length(); int rest=0; if(len!=0)rest=offset%len; if((rest!=0)&&(len!=0)) { tmp=str.substr(len-rest); str.erase(len-rest,rest); str=tmp+str; } } };
1.注意存在length為0的,要排除此種情況,因為引用,保持不動 2.注意string 的substr(索引號),substr(索引號,字元數目),使用迭代器的string::iterator i;erase(索引號,n),+,apeend()等方法。