題目:實現乙個函式,可以左旋字串中的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次,就可以完成了...