我关心的是将字符串添加到字符串数组中,但我想在插入数组之前确保该字符串是唯一的。我为此搜索并找到了很多方法,但我关心的是提高速度而不是在添加字符串之前检查所有数组元素是否重复,所以我决定执行以下操作:
- 获取字符串(来自 URL 挖掘项目的 URL,它可能会返回数千个 URL,并且有时可能会重复,作为交叉引用)。
- 获取 URL 中所有字符的 ASCII,并将它们乘以字符的索引(这是为每个 URL 创建唯一标识符)。
- 第 2 点中的这个值将是要插入此 URL 的数组中的索引。
- 现在的问题是,这个数组应该是动态的(如何根据我正在挖掘的 URL 的数量调整它的大小?)。
- 数组将是多孔的(意味着包含许多空值的数组),是否有任何有效的方法来获取仅具有值的单元格?
- 下面的代码用于获取唯一字符串的位置。
int index = 1;
int position = 0;
string s = Console.ReadLine();
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues)
{
position += b * index;
index++;
Console.WriteLine(b);
}
最佳答案
如评论中所述,HashSet
将是用于这种情况的集合。它表示一组(唯一的)值并具有 O(1) 查找。
因此,您只需循环要插入的字符串并将它们添加到集合中。如果该字符串已经存在,则不会再次添加。
var set = new HashSet<string>();
foreach(var s in strings)
set.Add(s);
关于c# - 在c#中的字符串数组中添加唯一字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108926/