實現乙個函式,可以左旋字串中的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,在將後...