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