對(duì)于一個(gè)字符串,和字符串中的某一位置,請(qǐng)?jiān)O(shè)計(jì)一個(gè)算法,將包括i位置在內(nèi)的左側(cè)部分移動(dòng)到右邊,將右側(cè)部分移動(dòng)到左邊。
站在用戶的角度思考問題,與客戶深入溝通,找到北海街道網(wǎng)站設(shè)計(jì)與北海街道網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋北海街道地區(qū)。給定字符串A和它的長(zhǎng)度n以及特定位置p,請(qǐng)返回旋轉(zhuǎn)后的結(jié)果。
測(cè)試樣例:
"AbcdeFgh",8,4 (為了方便起見我把兩部分的起始元素用大寫字母表示)
返回:"FghAbcde"
思路:
·方法一:將整個(gè)字符串左移或右移(p - 1)次
·方法二: 將要分成的前部分或后部分整體移動(dòng)
·方法三:利用棧
如: 先將FGH放置到前面,變成"FghdeFGH" 。每次覆蓋原有元素的時(shí)候?qū)⒃瓉淼脑卮嫒腙?duì)列中,上述步驟執(zhí)行完畢后依次從隊(duì)列中出隊(duì)并放入對(duì)應(yīng)的位置即可。
代碼如下:
string rotateString(string A, int n, int p) { queue<char> que; int i = p; int tmp_i = 0; for (i = p; i < n; i++) { que.push(A[tmp_i]); A[tmp_i] = A[i]; ++tmp_i; } que.push(A[tmp_i]); while (!que.empty()) { A[tmp_i] = que.front(); que.pop(); ++tmp_i; } A[tmp_i] = '\0'; return A; }
·方法四: 三次交換
這是一種很巧妙的算法。下面舉例說明:
還是用測(cè)試用例中的那段字符串 "AbcdeFgh"
根據(jù)p的位置,可以分為兩部分 "Abcde" 和 "Fgh"
可以先對(duì)兩個(gè)字符串分別逆序(第一次 和 第二次交換),得到 "edcbAhgF"
然后對(duì)整個(gè)字符串進(jìn)行逆序(第三次) 得到 "FghAbcde"
我在方法三中用到了棧,其實(shí)是跟該方法類似的思想,
不過這個(gè)方法比我自己的方法三不知道高到哪里去了 (◎﹏◎)
·方法五: 合并、并讀取
合并時(shí),對(duì)于string對(duì)象 直接用庫里已經(jīng)重載好的 "+" 操作符即可
(如果要合并兩個(gè)C風(fēng)格的字符串,則需要用strcat函數(shù))
例如測(cè)試用例的字符串 合并后為 "AbcdeFghAbcdeFgh"
然后再將這個(gè)合并后的字符串的第(p + 1)個(gè)元素到 (p + 1 + n)個(gè)元素按順序放入原字符串中即可。
代碼如下:
string rotateString(string A, int n, int p) { queue<char> que; int i = p; int tmp_i = 0; for (i = p; i < n; i++) { que.push(A[tmp_i]); A[tmp_i] = A[i]; ++tmp_i; } que.push(A[tmp_i]); while (!que.empty()) { A[tmp_i] = que.front(); que.pop(); ++tmp_i; } A[tmp_i] = '\0'; return A; }
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
新聞名稱:字符串旋轉(zhuǎn)的若干種算法(待續(xù))-創(chuàng)新互聯(lián)
鏈接地址:http://aaarwkj.com/article4/gjpie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、Google、網(wǎng)站維護(hù)、網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(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)容