字串反轉應該是比較常碰見的問題,今天我們來練一練 多種演算法的效率如何
有遞迴法(不推薦)、陣列倒序拼接、冒泡對調、使用stringbuffer的reverse方法等。
//遞迴方法
public static string reverse1(string s)
string left = s.substring(0, length / 2);
string right = s.substring(length / 2, length);
return reverse1(right) + reverse1(left);
}
遞迴的時間複雜度太高了,而且會隨著字串的長度增加而增加,效率差。
//字串轉換成字元陣列倒序拼接
public static string reverse2(string s)
倒序拼接應該注意不用直接使用string拼接,應該使用stringbuilder,否則隨著字串的長度增加,兩者的效率會很明顯拉大。
//冒泡對調
public static string reverse3(string orig)
return new string(s);
}
氣泡排序法應該是很常見的演算法,永遠記得當初c++老師教的時候,說 三個等號 搞定哈哈哈哈
//呼叫stringbuffer中的reverse方法
public static string reverse4(string s)
這個方法是最簡單的,一行**搞定!
那麼這四種演算法 肯定有效率高低之分了,不然不同演算法也沒有意義了。
筆者使用 26位英文本元作為輸入,看下執行一遍的時間,不能說明哪種速度快
那麼執行百萬次呢?試試五百萬次
足以說明 遞迴真的速度慢,還屬冒泡的速度最快效率最高了。好啦,實驗結束哈哈哈哈不喜勿噴噢
幾種方法實現「反轉字串」
今天遇到一道題目是實現乙個反轉字串的函式,具體如下 編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例...
C C 字串反轉的幾種方法
0.環境說明 windows7 vscode mingw32 1.使用 庫方法 reverse 功能 字串反轉 include include include using namespace std int main void 2.自己編寫 reverse 函式 include include us...
Python實現字串反轉的幾種方法
避開語言的特性來說 方法第一種 使用字串切片 result s 1 第二種 使用列表的reverse方法 l list s l.reverse result join l 第三種 使用reduce result reduce lambda x,y y x,s 第四種 使用遞迴函式 def func ...