LintCode刷題---旋轉字符串


描述:

  給定一個字符串(以字符數組的形式給出)和一個偏移量,根據偏移量原地旋轉字符串(從左向右旋轉)

樣例:

  輸入: str="abcdefg", offset = 3

  輸出: str = "efgabcd"

  樣例解釋: 注意是原地旋轉,即str旋轉后為"efgabcd"

  ......

 

解題: 

  難點分析: ①字符串為 "" 的情況

        ②偏移量 offset = 0

        ③偏移量 offset 遠大於字符串長度

  前兩種情況直接return就行了, 畢竟不要求發生改變; 第三種情況難以想到, 想到就很簡單了, 實際偏移量就是 offset%(字符串長度)

 

  由於本人能力很弱, 只能用比較傻的方法, 思路簡單, 供與初學者. 網上還有一堆花里胡哨的方法, 都看不懂, 有的只能看懂思路, 代碼看不懂,😫

public void rotateString(char[] str, int offset) {
        // write your code here
        if(str.length == 0 || offset == 0){
            return;
        } 
        offset = offset%str.length;//實際偏移量
        for(int i = 0;i<offset; i++){
            char temp = str[str.length-1];
            for(int j = str.length-1;j>0;j--){
                str[j] = str[j-1];
            }
            str[0] = temp;
        }
    }

  核心思想非常簡單, 就在兩層for循環中, 第一層for循環是偏移的次數, 第二層for循環實現偏移.

  在數組中利用下標的后一個等於前一個, 實現數組向右偏移一位, 需要的僅是把數組第一個數預先存儲下來.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM