LintCode 8.旋轉字串 C++
阿新 • • 發佈:2019-02-18
問題描述:給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉)
樣例:對於字串 "abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
分析:好了,我將開始我的表演。首先獲取字串str的長度len,然後如果長度為0或或旋轉量offset為0,不做任何操作,直接返回;如果旋轉量超出了str的長度len,那麼對offset取餘(這點剛開始我沒有考慮到,報錯了才發現)。然後定義一個臨時的串tem用來放尾部要被旋轉到頭部的字元,接下來就明朗了,先迴圈給
好了,如有錯誤,歡迎指出!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 len = str.length(); if(offset == 0 || len == 0){ return; }else if(offset > len){ offset = offset % len; } string tem; for(int i = 0;i < offset;i++){ tem[i] = str[len - 1 - i]; } for(int i = len - offset - 1;i >= 0;i--){ str[i + offset] = str[i]; } for(int i = 0;i < offset;i++){ str[i] = tem[offset - 1 - i]; } } };