C 實現字串左旋轉操作

2022-04-02 19:43:46 字數 709 閱讀 5796

競賽題目及要求:

定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。

要求:對長度為n的字串操作的時間複雜度為o(n),空間複雜度為o(1)。

思路:

如需對乙個字串「abcdef」進行前2個字元左旋轉操作,將字串「abcdef」分成兩部分,「ab」和「cdef」,分別對「ab」和「cdef」進行反轉操作,「ab」-->"ba","cdef"-->"fedc",     之後合併組成乙個「bafedc」的字串,再將「bafedc」進行發轉操作,「bafedc」-->"cdefab","cdefab"就是「abcdef」左旋轉兩位的結果。

**實現:

static void roll(stringbuilder strbuilder,int index,int n)

}/**

* 對字串str前index個數進行左旋轉操作

**/static void leftrotate(stringbuilder str,int index)

roll(str, 0, index);

roll(str, index, str.length - index);

roll(str, 0, str.length);

}

字串左旋轉操作

定義字串的左旋轉操作,把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab,請實現字串左旋轉函式。要求時間複雜度o n 空間複雜度o 1 解法是將前k個字串反轉,後面的字串同樣反轉,再對整個字串進行一次翻轉。1void swap string a,int low...

C 左旋轉字串

問題描述 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部,如把字串 abcd 左旋轉 2 位得到字串 cdab 請實現字串左旋轉的函式。演算法分析 1.暴力移位法 a 把最後乙個字元取出並儲存起來,然後z最後乙個字元前面的所有字元後移,b 儲存的最後乙個字元存放到第乙個字元的位置,c ...

左旋轉字串

題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...