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

2021-07-25 07:35:15 字數 1171 閱讀 5872

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

aabcd左旋乙個字元得到abcda

aabcd左旋兩個字元得到bcdaa

在c語言中,實現字串旋轉的方法有很多,今天我給大家介紹較為常見的三種實現方法,他們的時間複雜度還是有較大的差別,空間的占用也不盡相同,所以大家在以後的使用中按要求來選擇實現的方法。

方法一:

利用指標的指向定位出每個字元,先實現每次向左迴圈移動一位,再通過迴圈控制移動的次數,最後返回指標即可。(優點:思路簡單,缺點:效率不高)

具體實現:

#include#include#includevoid shiftstep(char *msg, int steps)

msg[i] = tmp; }}

int main()

方法二:利用區域性逆置和整體逆置的結合來實現字串的左移(優點:新開闢空間少,缺點:效率有待提高)例:將aabcd左移3位,先將aab逆置為baa,再將cd逆置為dc,

整體字串變為baadc,最後將整體逆置為cdaab即為最後結果!

具體實現:

#include#include#includevoid swap(char *a, char *b)       //將兩個字元調換 

void reversestr(char *start, char *end) //將字串逆置

}void shiftstep(char *msg, int steps)

int main()

方法三:

利用窮舉法來查詢旋轉後的字串(優點:效率高,缺點:需要新開闢的記憶體空間較前兩種方法大)

原理:利用新空間存入兩個連續的相同的字串,旋轉後的所有可能將出現在該長字串中,最後擷取字串獲得最終字串。

例:將aabcd左移3位,開闢新空間存入aabcdaabcd,直接從下標為3的地方擷取長度為5的字串即可。

具體實現:

該方法中需要注意的是strcpy()函式中的三個引數的作用 ,並且該函式本身不拷貝『\0』,所以在第三個引數傳長度時需要將『\0』算進去。

#include#include#includevoid shiftstep(char *msg, int steps)

int main()

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

c語言 實現乙個函式,可以左旋字串中的k個字元。例如 abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 思路一 常規思路很簡單,很容易想出來,以左旋乙個字元為例,建立乙個變數tmp將字串的第乙個字元賦給tmp,然後將字串所有的字元往前移一位比如移動之前是abcd,移動之後就是bcd...

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

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

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

實現乙個函式,可以左旋字串中的k個字元。aabcd左旋乙個字元得到abcda aabcd左旋兩個字元得到bcdaa 1 可以通過字串互換,每左旋一次,字串第乙個移到最後乙個,其餘字元整體向前移動一位。如下 include include includevoid reverse char str,in...