天天看點

《劍指offer》——左旋轉字元串片段截取法字元串拼接

更多2019年的技術文章,歡迎關注我的微信公衆号:碼不停蹄的小鼠松(微信号:busy_squirrel),也可掃下方二維碼關注擷取最新文章哦~
《劍指offer》——左旋轉字元串片段截取法字元串拼接

T:

題目描述

彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!

片段截取法

這種方法,相對于最笨的方法來說,已經做了改進。

改進的地方在于:
如果循環左移的次數超過字元串的長度,比如長度為3,但是循環左移100次,那麼前99次都是做的無用功,因為在移動99次之後,又回到了原點。

我的code:

/**
     * T: 左旋轉字元串
     *
     * 題目描述
     * 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。
     * 對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,
     * 要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
     *
     * date: 2015.12.10  21:07
     * @author SSS
     *
     */
    public class Solution {
        public String LeftRotateString(String str,int n) {
            String resultStr = str;
            if (str == null || str.length() == 0) {
                return resultStr;
            }
             
            int len = str.length();
            int indexOfLeftRoate = n % len;
             
            if (indexOfLeftRoate != 0) {
                String clipStr = str.substring(0, indexOfLeftRoate);
                String restStr = str.substring(indexOfLeftRoate);
                resultStr = restStr + clipStr;
            }
             
            return resultStr;
        }
    }
           

字元串拼接

這種方法,從時間複雜度上來講,與上一種解法一樣,都是 O ( n ) O(n) O(n),但是從技巧性來說,這種方法更勝一籌。不多解釋,代碼很簡單,一看就明白這一籌勝在哪兒了。。。

我的code:

/**
     * T: 左旋轉字元串
     *
     * 題目描述
     * 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。
     * 對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,
     * 要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
     *
     * date: 2015.12.10  21:26
     * @author SSS
     *
     */
    public class Solution {
        public String LeftRotateString(String str,int n) {
            if (str == null || str.length() == 0) {
                return str;
            }
            int len = str.length();
            int index = n % len;
            str += str;
             
            return str.substring(index, index + len);
        }
    }
           
更多2019年的技術文章,歡迎關注我的微信公衆号:碼不停蹄的小鼠松(微信号:busy_squirrel),也可掃下方二維碼關注擷取最新文章哦~
《劍指offer》——左旋轉字元串片段截取法字元串拼接