字串左旋問題

2021-08-21 03:37:46 字數 1123 閱讀 3759

實現乙個函式,可以左旋字串中的k個字元。例如 abcd左旋乙個字元得到bcda ,abcd左旋兩個字元得到cdab

參考**:

#include

#include

#include

void left_swap(char *str, int n)

*cur = temp;

//將之前儲存起來的元素放在最後}}

int main()

參考**:

#include

#include

#include

static

void

reverse(char *left, char *right)

}//逆置字串

void left_swap(char *str, int n)

int main()

推廣:判斷乙個字串是不是經過另乙個字串旋轉的到的

參考**:

#include

#include

#include

#include

int is_swap(char *sour, const

char* cmp)

return

0; //返回1表示是,返回0表示不是

}int main()

else

system("pause");

return

0; }

在上邊的**連線字串用了strncat函式,為什麼不用strcat函式呢?

strcat(str,str)會引起死迴圈,因為strcat函式要先找到第乙個字串的』\0』,找到之後從』\0』開始追加字串,把第乙個字元拷貝過去之後』\0』已經被覆蓋了,所以會引起死迴圈。

字串左旋問題

字串左旋k個字元看起來毫無頭緒,仔細想想也會有規律,左旋即就是先讓 0右移一位,再讓陣列首元素放到原來 0的位置,這是左旋一位的情況,如果左旋兩位的話,就在剛才的基礎上再重複操作一次,陣列傳參推薦使用傳址,函式就會定義乙個指標變數指向陣列首元素,另外函式的返回值也應是指標型別,返回陣列首元素的下標,...

字串左旋右旋問題

如把字串abcdef 左旋轉2 位得到字串cdefab。要求時間對長度為n 的字串操作的複雜度為o n 輔助記憶體為o 1 分析 如果不考慮時間和空間複雜度的限制,最簡單的方法莫過於把這道題看成是把字串分成前後兩部分,通過旋轉操作把這兩個部分交換位置。於是我們可以新開闢一塊長度為n 1 的輔助空間,...

左旋字串

1.問題描述 字串的左旋操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串 abcdefg 和數字2,該函式將返回左旋轉2位得到的結果 cdefgab 來自 劍指offer 2.分析 其實和翻轉單詞順序差不多,我們可以先將前面2位翻轉得到 ba,在將後...