劍指offer 左旋轉(zhuǎn)字符串

點(diǎn)擊進(jìn)入 牛客網(wǎng)題庫(kù):左旋轉(zhuǎn)字符串

題目描述

匯編語(yǔ)言中有一種移位指令叫做循環(huán)左移(ROL),現(xiàn)在有個(gè)簡(jiǎn)單的任務(wù),就是用字符串模擬這個(gè)指令的運(yùn)算結(jié)>果。對(duì)于一個(gè)給定的字符序列S,請(qǐng)你把其循環(huán)左移K位后的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸>出循環(huán)左移3位后的結(jié)果,即“XYZdefabc”。是不是很簡(jiǎn)單?OK,搞定它!

方法一 時(shí)間復(fù)雜度O(string.length * n)

public class Solution {
    public String LeftRotateString(String str,int n) {
        if(str == null || "".equals(str)) {
            return "";
        }
        
        char[] c = str.toCharArray();
        while(n-- > 0) {
            c = moveStr(c);
        }
        return new String(c);
    }
    
    private char[] moveStr(char[] c) {
        char t = c[0];
        for(int i = 1; i < c.length; i++) {
            c[i-1] = c[i];
        }
        c[c.length - 1] = t;
        return c;
    }
}

方法二 時(shí)間復(fù)雜度 O(n) 空間復(fù)雜度 O(1)

假設(shè),輸入進(jìn)來(lái)的是 abcdef 我要反轉(zhuǎn) n= 3
1先反轉(zhuǎn)前面的 abc -> cba
就得到字符串 cbadef

  1. 反轉(zhuǎn)后面的 def -> fed
    就得到字符串 cbafed
  2. 整個(gè)字符串進(jìn)行反轉(zhuǎn) cbafed -> defabc
    這個(gè)結(jié)果就出來(lái)了
public class Solution {
    public String LeftRotateString(String str,int n) {
        if(str == null || "".equals(str)) {
            return "";
        }
        
        char[] c = str.toCharArray();
        int len = str.length();
        n %= len;
      
        //先反轉(zhuǎn)前面的    
        reverseStr(c, 0, n - 1);
        //再反轉(zhuǎn)后面的
        reverseStr(c, n, len - 1);
        //最后一起反轉(zhuǎn)
        reverseStr(c, 0, len - 1);
           
        return new String(c);
    }
    
    private void reverseStr(char[] c, int start, int end) {
        while(start < end) {
            char t = c[start];
            c[start++] = c[end];
            c[end--] = t;
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述 [左旋轉(zhuǎn)字符串] 匯編語(yǔ)言中有一種移位指令叫做循環(huán)左移(ROL),現(xiàn)在有個(gè)簡(jiǎn)單的任務(wù),就是用字符串模擬這...
    一只可愛(ài)的檸檬樹(shù)閱讀 115評(píng)論 0 0
  • 本文首發(fā)于我的個(gè)人博客:尾尾部落 題目描述 匯編語(yǔ)言中有一種移位指令叫做循環(huán)左移(ROL),現(xiàn)在有個(gè)簡(jiǎn)單的任務(wù),就...
    繁著閱讀 248評(píng)論 0 0
  • 1、題目描述 字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部。 請(qǐng)定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作...
    七月初一_3679閱讀 116評(píng)論 0 0
  • 1.二維數(shù)組的查找 題目描述:在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長(zhǎng)度相同),每一行都按照從左到右遞增的順序排序,每一...
    少年夢(mèng)游計(jì)_3403閱讀 1,223評(píng)論 0 1
  • 80年代,香港的九龍住著這樣一家人,爸爸江海,是一家公司的會(huì)計(jì)師,媽媽叫佩蘭,是一個(gè)家庭主婦,姐姐子青當(dāng)時(shí)8歲,弟...
    曉春_bea7閱讀 412評(píng)論 0 1

友情鏈接更多精彩內(nèi)容