C語言 實現乙個函式,可以左旋字串中的k個字元。

2021-08-22 00:13:11 字數 882 閱讀 3002

題目:實現乙個函式,可以左旋字串中的k個字元。abcd左旋乙個字元得到bcda,abcd左旋兩個字元得到cdab。

此題的解決思路有兩種:①暴力移位法  ②三步翻轉法

方法一:暴力移位法

首先我們定義乙個tmp,將這個字串中的第乙個字元儲存起來,然後將字串後面所有的字元向前移動,最後將儲存的第乙個字元放在最後。左旋k個字元就迴圈k次,就可以實現。

但是此方法沒有考慮效率問題,如果左旋的次數多了,那麼後面的字元則會多次移動。

方法一具體**如下:

#include #include #include void left_move(char arr, int k)

*(arr + len - 1) = tmp;//把儲存的字元放在最後 }}

int main()

方法二:三步翻轉法

如:abcdef(左旋兩個字元)

第一步,將前半部分的字元逆序----->bacdef

第二步,將後半部分的字元逆序----->bafedc

第三步,將字串整體逆序----->cdefab

所以此時我們需要構造乙個逆置函式,連續呼叫三次即可實現。此方法較為高效。

方法二具體**如下:

#include #include #include #include void reverse(char *left, char* right)

}void left_move(char arr, int k)

int main()

C語言實現乙個函式,可以左旋字串中的k個字元

define crt secure no warnings include include include 1.實現乙個函式,可以左旋字串中的k個字元。abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 交換字串陣列中的兩個字元 include include include 旋轉乙...

用C語言實現乙個函式,可以左旋字串中的k個字元

題目 實現乙個函式,可以左旋字串中的k個字元。abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 思路 abcd左旋乙個位元組,先把最左側的a拿出來存到乙個中間變數中,然後其餘的後乙個位元組放到前乙個位元組的位置,再把中間變數中存的值給最後乙個位元組,即完成一次左旋。需要左旋兩次時就...

實現乙個函式,可以左旋字串中的k個字元

實現乙個函式,可以左旋字串中的k個字元 例如 aabcd左旋乙個字元得到abcda aabcd左旋兩個字元得到bcdaa 方法 1 採用迴圈移位,對需要旋轉的k個字元按順序進行旋轉,先將要旋轉的乙個字元儲存起來,將後面的往前挪動一位,再將儲存起來的這個字元賦給最後一位,這樣連續迴圈k次,就可以完成了...