左旋字串的三種演算法

2021-08-10 14:44:13 字數 897 閱讀 7043

abcd1234 左旋4個字元 —–> 1234abcd

方法一:迴圈移動

這裡先把』a』右移7個單位,得到bcd1234a,然後再把』b』右移7個單位》得到cd1234ab。按這個步驟迴圈四次後得到1234abcd。

**如下:

void left_rotate(char *str, int len, int k)

str[k - 1 + i] = tem;

}k--; //開始移動另乙個字元}}

else

}

要把abcd1234左旋4個字元變成1234abcd,這裡分三步

①把abcd逆序 —–> dcba

②把1234逆序 —-> 4321

③此時字串變成dcba4321,然後把整個字串逆序—> 1234abcd

**如下:

void

reverse(char *start, char *end) //左旋——逆序法

}else

}void left_rotate(char *str, int len, int k)

else

}

方法三:雙倍字串——窮舉法(用空間換取時間)

①建立乙個空間,裡面存」abcd1234abcd1234」

②把這個字串從第5個字元』1』到第12個字元』d』依次拷貝到原字串陣列裡。

**如下:

左旋字串的三種實現

左旋字串是許多公司面試官喜歡問到的問題,那麼這片博文就是要講一下左旋字串的實現以及 劍指offer 裡面是怎樣解決這個問題。一.先看看一道面試題 eg 輸入乙個英語句子,翻轉句子中單詞的順序,但單詞內字元額順序不變。為了簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student...

左旋字串的三種方法

注 有效次數為 總次數 n 如上圖所示,假設對字串左旋6次和左旋2次,得到的結果是一樣的 思路 include include include include pragma warning disable 4996 遮蔽scanf出現的錯誤 char a abcd1234 變數定義成全域性較好 in...

字串匹配的三種演算法

下面將介紹三種有關字串匹配的演算法,一種是樸素的匹配演算法,時間複雜度為o mn 也就是暴力求解。這種方法比較簡單,容易實現。一種是kmp演算法,時間複雜度為o m n 該演算法的主要任務是求模式串的next陣列。另外還有一種對kmp演算法的改進,主要是求nextval陣列。第一種樸素的匹配演算法 ...