Search code examples
c#arraysstringunique

Adding unique string in string array in c#


My concern is adding string to array of string, but I wanted to make sure that this string is unique before inserting into the array. I searched and found many approaches for this but my concern is to make faster rather than checking all array elements for duplicate before adding the string, so I decided to do the following:

  1. Get the string (URL from URL Mining Project, that may return thousands of URLs and may be duplicated in sometimes, as cross referenced).
  2. Get the ASCII for all characters in the URL and add them up multiplied by the index of the char (this is to make unique identifier for each URL).
  3. This value in point 2 will be the index in the array to insert this URL in.
  4. The Problem now, this array should be dynamic (How to resize it depending on number of URLS I'm mining?).
  5. The array will be porous (means array with many nulls), is there any efficient way to get the cells that have values only?
  6. Below code is used to get the position for unique string.
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);
}

Solution

  • As mentioned in the comments a HashSet would be the collection to use for this case. It represents a (unique) set of values and has O(1) lookup. So you would just loop the strings you want to insert and add them to the set. If the string is already in there it will not be added again.

    var set = new HashSet<string>();
    foreach(var s in strings)
       set.Add(s);