-3

如何检查列表是否包含字符串或后跟该字符串的任何数字?我需要在列表中添加字符串。在将其添加到列表中时,我必须检查该字符串是否已存在于该列表中。如果是这样,需要插入具有整数计数的字符串。也就是说,如果名称已经存在意味着它应该作为“Name1”插入。如果我再次添加名称意味着它应该作为 name2 插入。等等......我怎样才能做到这一点?

List<Names> NameList=new List<Names>();

Name name=new Name();
name.Name="Name";
NameList.Add(Name);

Name name1=new Name();
name1.Name="Name";
NameList.Add(Name1);

Name name2=new Name();
name2.Name="Name";
NameList.Add(Name2);

Public class Name
{
 string Name {get;set; }
}
4

2 回答 2

1

您的代码无法编译,但我假设您正在谈论List<string>. 如果是这样,算法可能是:

string val = "Name";
string toInsert = val;
int n = 1;
while(list.Contains(toInsert))
{
   toInsert = val + n++;
}
list.Add(toInsert);
于 2012-07-24T18:52:20.050 回答
0

你应该看看HashSet<T>课堂。

有了这个,您可以在 O(1) 中进行查找。但请注意,这会使用您的类的方法Equals()和方法GetHashCode()来检查是否相等。因此,要么将简单的字符串放入集合中进行检查,要么IEqualityComparer为您的 Name 类编写适当的字符串,并将其实例放入哈希集的构造函数中。如果您需要帮助来编写一个好的GetHashCode实现,请查看这个SO question

于 2012-08-07T06:45:44.203 回答