在以前我寫過類似問題的博客,是倒置單詞http://t.csdn.cn/rqhRL
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)確山,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575目錄
一、問題描述
二、分析與設(shè)計(jì)
三、代碼實(shí)現(xiàn)
實(shí)現(xiàn)一個(gè)函數(shù),可以左旋字符串中的k個(gè)字符。
例如:
ABCD左旋一個(gè)字符得到BCDA
ABCD左旋兩個(gè)字符得到CDAB
二、分析與設(shè)計(jì)按照常規(guī)思路,逆序第一步就是先把第一個(gè)字符取出,然后把后邊的字符向前移動(dòng),接著把第一個(gè)字符放到\0之前。然后繼續(xù)進(jìn)行,知道逆序完成最后一個(gè)字符,結(jié)束逆序。
但是,很顯然這不算最好的方法。
更好的方法如下:
首先逆序前k個(gè)字符,然后逆序剩下的字符,最后把所有除了\0之外的字符逆序。
例如,在字符串a(chǎn)bcdef中逆序前兩個(gè)字符,那么就要先把a(bǔ)b逆序成ba,然后把cdef逆序成fedc,最后整體逆序成cdefab:
三、代碼實(shí)現(xiàn)#include
void reverse(char* left, char* right)
{
assert(left);
assert(right);
while (left< right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void left_move(char arr[], int k)
{
int len = strlen(arr);
k %= len;
//逆序左
reverse(arr, arr + k - 1);
//逆序右
reverse(arr + k, arr + len - 1);
//逆序整體
reverse(arr, arr + len - 1);
}
int main()
{
char arr[] = "abcdef";
int k = 8;
left_move(arr, k);
printf("%s\n", arr);
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞名稱:C語言-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://m.rwnh.cn/article16/poedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、ChatGPT、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容