c# - 在c#中的字符串数组中添加唯一字符串

标签 c# arrays string unique

我关心的是将字符串添加到字符串数组中,但我想在插入数组之前确保该字符串是唯一的。我为此搜索并找到了很多方法,但我关心的是提高速度而不是在添加字符串之前检查所有数组元素是否重复,所以我决定执行以下操作:

  1. 获取字符串(来自 URL 挖掘项目的 URL,它可能会返回数千个 URL,并且有时可能会重复,作为交叉引用)。
  2. 获取 URL 中所有字符的 ASCII,并将它们乘以字符的索引(这是为每个 URL 创建唯一标识符)。
  3. 第 2 点中的这个值将是要插入此 URL 的数组中的索引。
  4. 现在的问题是,这个数组应该是动态的(如何根据我正在挖掘的 URL 的数量调整它的大小?)。
  5. 数组将是多孔的(意味着包含许多空值的数组),是否有任何有效的方法来获取仅具有值的单元格?
  6. 下面的代码用于获取唯一字符串的位置。
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/

相关文章:

c# - 如何在 navigateURL 属性的 HyperLink 控件中传递隐藏字段值?

javascript - 在表单中动态添加数组文本框

c++ - 如何使用嵌套循环增加数组的值

string - 查找连续相等字符的最长子串时出现 "borrowed value does not live long enough"错误如何处理?

C++ 修改字符串时遇到问题

c# - 使用命名空间处理 C# XML 反序列化

C# MySql DataTable填充数组

c# - Code First 枚举放入查找表

Javascript使用电子表格范围A1表示法从二维数组中提取子数组

ios - 在 iOS 上用多个正则表达式替换文本