等快遞無聊--旋轉字符串
真是個無語的周末,昨天下午等了幾個小時的快遞,買了兩本書《代碼大全》和《編程珠璣》,還有別人的衣服,今天一大早又跑到公司來等快遞,又是別人的衣服,還沒有到呢,做專業的代購真是無語,本想買票,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;
}