C語言 3種方法實現左旋字串

2021-10-01 04:53:37 字數 937 閱讀 4991

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

比如:abcd左旋乙個字元得到bcda

方法一:

可以定義乙個temp變數臨時儲存第乙個字元,然後從第二個元素開始,依次往前移動,最後將第乙個字元放到最後就好了,要左旋多少個就把之前步驟重複多少次

**如下:

void

leftmove

(char

*str,

int len,

int num)

str[i]

= temp;

//注意臨界}}

intmain()

方法二:

上面的方法用了兩個迴圈,時間複雜度為o(n^2),可以再優化一下:要左旋幾次,就把前面幾個作為乙個整體,後面為乙個整體,兩部分分別逆置,最後再總體逆置就好啦,就是不太好想

函式實現部分:

//逆置

void

reserve

(char

* start,

char

* end)

}//左旋

void

leftmove1

(char

*str,

int len,

int num)

方法三:

可以把兩個相同的字串拼在一起,然後要左旋幾次就從**開始向後拿乙個字串的長度

函式實現部分:

void

leftmove2

(char

* str,

int len,

int num)

左旋字串的三種方法

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

C語言左旋字串

問題 實現乙個函式,可以左旋字串中的k個字元。abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 方法一 思路 1 定義字串。2 需注意字串旋轉次數可為n次 正整數 如旋轉23次和旋轉3次的結果一樣 3 計算實際旋轉次數 4 寫內層迴圈一次左旋 5 加外層迴圈控制實際迴圈次數 inc...

C語言 字串左旋

問題 實現乙個函式,可以左旋字串中的k個字元。例如 abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 方法一 將第乙個字元複製乙份,然後將字串左移一位再將第乙個字元賦值給最後一位,要移動k個字元就迴圈k次。方法二 將字串分為兩部分,先將前k個字元逆置,再將後一部分字串逆置,最後將整...