作者sicao (adios)
看板C_Sharp
標題[問題] 找出字串是否存在某字最快的方法??
時間Sun Nov 9 22:24:50 2025
想問一下
目前有一字串 string source = "123,124,130,....";
是不重複三位數以逗號連接起來的一字串
那想知道某數(ex:555)是否在此字串內
哪種方式是最快的??
目前有一些方法
直接 source.Contains("555");
或
先弄成陣列
string[] _array = source.split(',');
再用
迴圈
Array.FindIndex(_array, x => x == "555");
Array.Exists(_array, element => element == "555");
_array.Contains("555");
.... 族繁不及備載
請問哪種效率快又好?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.53.170 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1762698292.A.728.html
1F:推 ian90911: new HashSet<string>(source.Split(',')) 然後Contains 11/11 00:41
2F:→ disabledman: contains("555,") 11/20 07:13
3F:→ ssccg: 多做Split肯定比較慢,Split的過程就已經掃過整個字串了 11/24 11:22
4F:→ ssccg: 你的字串格式對每4個字元,前3個任一個比對失敗就直接跳下 11/24 11:27
5F:→ ssccg: 一組,直接寫一個迴圈就能保證上限O(n)比一般的substring演 11/24 11:29
6F:→ ssccg: 算法(Contains內建做法)都要快 11/24 11:29