1. 程式人生 > >lintcode刷題筆記day4

lintcode刷題筆記day4

描述 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 您在真實的面試中是否遇到過這個題? 是 題目糾錯 樣例 對於字串 “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()等方法。