我担心的是将字符串添加到字符串数组中,但我希望在插入数组之前确保此字符串是唯一的。我搜索并找到了很多方法,但我关心的是在添加字符串之前加快而不是检查所有数组元素是否重复,所以我决定做以下事情:
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);
}
答案 0 :(得分:3)
如评论中所述,HashSet
将是用于此案例的集合。它表示一组(唯一的)值,并具有O(1)查找。
因此,您只需循环插入要插入的字符串并将其添加到集合中。如果该字符串已经存在,则不会再次添加。
var set = new HashSet<string>();
foreach(var s in strings)
set.Add(s);
答案 1 :(得分:0)
我使用了Dictionary并设法解决它..请检查下面链接中的代码
Hashset handling to avoid stuck in loop during iteration
虽然我使用proc添加两个字典并确保没有重复,但有时候我的代码会出错并尝试添加重复的密钥!!!
下面的代码我发现它在某处工作正常并且在上面的链接中我使用迭代在迭代期间添加删除。
public static void Add2Dic(IDictionary firstDict, IDictionary secondDict, bool bReplaceIfExists)
{
foreach (object key in firstDict.Keys)
{
if (!secondDict.Contains(key))
secondDict.Add(key, firstDict[key]);
else if (bReplaceIfExists)
secondDict[key] = firstDict[key];
}
}