倒轉字串的另一種BT方法

2022-01-31 02:29:12 字數 1048 閱讀 9729

比如說字串abcdefgh,那麼反轉順序為

abcdefgh => badcfehg => dcbahgfe => hgfedcba

這種演算法對於字串的位數等於2的n次方,是很簡單的,比如說,乙個長度8的字串,其反轉演算法如下:

static string reversebitarray2(string str)

}pow *= 2;

}return new string(arr);

}

如果字串的位數不等於2的n次方呢?這也是大多數情況,我們需要額外進行很多判斷,邏輯不要太複雜,所以未必是一種好辦法。

我們不妨考慮,擴充套件這個需要反轉的字串,為其尾部新增一些字元,使其長度變成2的n次方,然後就可以使用我們上面的演算法了,最後記得開頭的若干字元是不要的哦,**如下:

static string reversebitarray2(string str)

return reversebitarray(arr, str.length);

}}

為此我們要過載reversebitarray函式,以適合最普通的情形:

static string reversebitarray(char arr, int actuallength)

}pow *= 2;

}return new string(arr, arr.length - actuallength, actuallength);

}

注:這裡我們用到了getpow函式,如果str的長度是2的n次冪,就返回0;否則,返回大於str長度的最小2的n次冪:

static int getpow(string str)

if (pow == len)

return 0;

else

//pow>len

return pow;

}

但這種演算法需要額外的空間,最糟糕的情況,如果字串長度為2的n次方+1,那麼我們就要多分配2的n次方-1的空間。但比起分配乙個和原陣列等長的棧,大大的節省了空間。

分而治之的思想,妙極!大家細細品味。

呼叫方法的另一種方式

一般我們呼叫乙個類的方法,都是通過這個類本身 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的建構函...