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

看板C_Sharp (C#)作者 (adios)時間3周前 (2025/11/09 22:24), 編輯推噓1(105)
留言6則, 3人參與, 1周前最新討論串1/1
想問一下 目前有一字串 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://www.ptt.cc/bbs/C_Sharp/M.1762698292.A.728.html

11/11 00:41, 3周前 , 1F
new HashSet<string>(source.Split(',')) 然後Contains
11/11 00:41, 1F

11/20 07:13, 2周前 , 2F
contains("555,")
11/20 07:13, 2F

11/24 11:22, 1周前 , 3F
多做Split肯定比較慢,Split的過程就已經掃過整個字串了
11/24 11:22, 3F

11/24 11:27, 1周前 , 4F
你的字串格式對每4個字元,前3個任一個比對失敗就直接跳下
11/24 11:27, 4F

11/24 11:29, 1周前 , 5F
一組,直接寫一個迴圈就能保證上限O(n)比一般的substring演
11/24 11:29, 5F

11/24 11:29, 1周前 , 6F
算法(Contains內建做法)都要快
11/24 11:29, 6F
文章代碼(AID): #1f4AGqSe (C_Sharp)
文章代碼(AID): #1f4AGqSe (C_Sharp)