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

楼主: 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