比如說字串abcdefgh,那麼反轉順序為
abcdefgh => badcfehg => dcbahgfe => hgfedcba
這種演算法對於字串的位數等於2的n次方,是很簡單的,比如說,乙個長度8的字串,其反轉演算法如下:
static string reversebitarray2(string str)如果字串的位數不等於2的n次方呢?這也是大多數情況,我們需要額外進行很多判斷,邏輯不要太複雜,所以未必是一種好辦法。}pow *= 2;
}return new string(arr);
}
我們不妨考慮,擴充套件這個需要反轉的字串,為其尾部新增一些字元,使其長度變成2的n次方,然後就可以使用我們上面的演算法了,最後記得開頭的若干字元是不要的哦,**如下:
static string reversebitarray2(string str)為此我們要過載reversebitarray函式,以適合最普通的情形:return reversebitarray(arr, str.length);
}}
static string reversebitarray(char arr, int actuallength)注:這裡我們用到了getpow函式,如果str的長度是2的n次冪,就返回0;否則,返回大於str長度的最小2的n次冪:}pow *= 2;
}return new string(arr, arr.length - actuallength, actuallength);
}
static int getpow(string str)但這種演算法需要額外的空間,最糟糕的情況,如果字串長度為2的n次方+1,那麼我們就要多分配2的n次方-1的空間。但比起分配乙個和原陣列等長的棧,大大的節省了空間。if (pow == len)
return 0;
else
//pow>len
return pow;
}
分而治之的思想,妙極!大家細細品味。
呼叫方法的另一種方式
一般我們呼叫乙個類的方法,都是通過這個類本身 static方法 或者它的乙個例項去呼叫.比如 inte ce iservice void runservice icontext context class servicea iservice public override void runservi...
另一種vc編譯驅動方法
vc6只是乙個ide,可以方便的呼叫編譯器,鏈結器,標頭檔案,庫檔案,如果編輯和編譯驅動能整合在一起,這樣可以提高開發效率。對於普通的win32應用程式,vc6已經預設支援了,而對於驅動程式沒有設定好的工程嚮導。其實驅動程式也就是乙個sys,是通過c語言寫成,所以編譯它理論上沒有問題,只是在實際操作...
動態XtraReports的另一種方法
昨晚一下忘了,昨天在一籌莫展的情況下,有一位好心 小土豆 遠端協助,實操指導了另外一種動態xtrareports方法。因為是他幫我寫的 我就不貼了。簡單說一下方法思路。在xtrareports資料欄內加入乙個gridcontrol1,將其dock設為fill。然後還是在xtrareports的建構函...