C語言多種方法實現乙個函式左旋字串中K個字元

2022-09-21 22:00:21 字數 901 閱讀 9717

目錄

今天看到乙個有趣的筆試題:實現乙個函式,可以左旋字串中的k個字元。示例如下:

abcd左旋乙個字元得到bcda

abcd左旋兩個字元得到cdab

提示:以下是本篇文章正文內容,下面案例可供參考

這個方法的思路我來簡單介紹一下:

現有1個字串abcd

我們將a移出來,然後bcd前會空出乙個位置

將bcd向前移動乙個位置,最後把a放入最後乙個位置,即可完成1次左旋

那麼1次完成了,對於左旋k次呢?實際上也就是把上述操作再執行k-1次。

**如下(示例):

#include

#include

void left_move(char*arr, int k)//arr傳過來的是首元素位址,你可以用乙個指標去接收

arr[len -程式設計客棧 1] = tmp; }}

int main()

ps:這裡多使用乙個assert是為了防止函式傳過來的是空指標,會進行斷言,如果傳的是空指標,系統會報錯

我們以abcdef左旋2次進行舉例:

左旋2次也就是把ab移動到cdef後面,下面看我操作,先將ab、cdef分為兩個組

將兩個組分別逆序

最後整體逆序得到最終結果cdefab

那麼左旋k次也就是把2變成k即可,整體仍然是這3個步驟,非常方便

**如下(示例):

#include

#include

void reverse(char*l, char*r)//逆序函式

}void left_move(char*arr, int k)

程式設計客棧int main()

ps:關於每一次的逆序函式:以abcd舉例,就是a和d換位,b和c換位,得到dcba,然後這樣的逆序進行三次即可得到所謂的左旋。

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

題目 實現乙個函式,可以左旋字串中的k個字元。比如 abcd左旋乙個字元得到bcda 方法一 可以定義乙個temp變數臨時儲存第乙個字元,然後從第二個元素開始,依次往前移動,最後將第乙個字元放到最後就好了,要左旋多少個就把之前步驟重複多少次 如下 void leftmove char str,int...

c語言 多種方法實現兩個數的交換

交換兩個數的內容是c語言中常見的問題,所以在此總結一下我所學到的幾種方法。首先,舉乙個例子,假設a 10,b 20.第一種方法,借助乙個臨時變數來進行儲存,這是最容易也是最直觀的方法。如下 int a,b,t a 10 b 20 printf a d b d a,b t a a b b t prin...

C實現計算器(多種方法)

最普遍也是最基礎就是用switch開關語句實現,很簡單,也很好像將switch放在乙個死迴圈中然後在迴圈內輸入input的值來呼叫不同四個函式。這個 寫得很挫,而且很基礎了所以還有下面用函式指標,以及指標陣列來完成的簡單操作。define crt secure no warnings 1 inclu...