目錄
今天看到乙個有趣的筆試題:實現乙個函式,可以左旋字串中的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...