等快遞無聊--旋轉字符串


等快遞無聊--旋轉字符串

真是個無語的周末,昨天下午等了幾個小時的快遞,買了兩本書《代碼大全》和《編程珠璣》,還有別人的衣服,今天一大早又跑到公司來等快遞,又是別人的衣服,還沒有到呢,做專業的代購真是無語,本想買票,12306更讓我無語,想登陸門都沒有,只好玩玩程序,昨天看了編程珠璣,里面有個問題是關於字符串的旋轉的,題目如下:

將一個N元一維向量左旋i個位置,例如當n=8且i=3時,向量abcdefgh旋轉為defghabc。你能否僅用數十個額外字節的存儲空間,在正比於n的時間內完成向量的旋轉

廢話就不多說了,其他垃圾的方法都直接PASS,直接看最好最正確的方法,沒有時間寫這些方法,也沒有更多的時間解釋了,我馬上就要上演《急速快遞》,代碼如下:

#include "stdafx.h"
#include <iostream>
using namespace std;

void Change(char *arr ,int start,int end)
{
end--;
while(start<end)
{
arr[start]^=arr[end];
arr[end]^=arr[start];
arr[start++]^=arr[end--];
}
}

void WordWheel(char *arr ,int count,int length)
{
Change(arr,0,count);
Change(arr,count,length);
Change(arr,0,length);
}


//測試代碼
int main() {
char str[]="abcdefghijk";
WordWheel(str,4,11);
cout<<str<<endl;
getchar();
return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM