【題目】左旋轉字串。把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉 3位得到字串 defabc。請實現字串左旋轉的函式。要求時間對長度為n 的字串操作的複雜度為o(n),輔助記憶體為o(1)。
【思路】方法1:要求了時間和空間複雜度,從字元特徵上看,可以認為,後面的字元往前移動了幾位。可以一次往前移動一位,移動的次數就是要求旋轉的次數,時間複雜度是小於n的,空間上採用memmove()函式調整記憶體內容。方法2:把字串看成有兩段組成的,記位xy。左旋轉相當於要把字串xy 變成yx。先在字串上定義一種翻轉的操作,就是翻轉字串中字元的先後順序。把 x翻轉後記為xt。顯然有(xt)t=x。首先對x和 y兩段分別進行翻轉操作,這樣就能得到 xtyt。接著再對xtyt 進行翻轉操作,得到(xtyt)t=(yt)t(xt)t=yx。正好是期待的結果。
【**】 //by proing [ #include "stdafx.h" #include #include #include using namespace std; int leftrotate(char *str,int lnum) return 1; }
左旋轉字串
題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...
左旋轉字串
package com.string 旋轉字串 q 26 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 public cla...
左旋轉字串
如abc,左旋1得到bca,左旋2得到cab o n k 的演算法 include using namespace std include include include include include include include include include include int main...