[問題] 找出字串是否存在某字最快的方法??

作者: sicao (adios)   2025-11-09 22:24:50
想問一下
目前有一字串 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");
.... 族繁不及備載
請問哪種效率快又好?
謝謝
作者: ian90911 (xopowo)   2025-11-11 00:41:00
new HashSet<string>(source.Split(',')) 然後Contains
作者: disabledman (m.m.)   2025-11-20 07:13:00
contains("555,")
作者: ssccg (23)   2025-11-24 11:22:00
多做Split肯定比較慢,Split的過程就已經掃過整個字串了你的字串格式對每4個字元,前3個任一個比對失敗就直接跳下一組,直接寫一個迴圈就能保證上限O(n)比一般的substring演算法(Contains內建做法)都要快

Links booklink

Contact Us: admin [ a t ] ucptt.com