-3

リストに文字列またはその文字列が後に続く任意の数字が含まれていることを確認するにはどうすればよいですか?リストに文字列を追加する必要があります。リストに追加するときに、その文字列がそのリストにすでに存在するかどうかを確認する必要があります。その場合は、整数カウントでその文字列を挿入する必要があります。つまり、名前がすでに存在する場合は、「Name1」として挿入する必要があります。もう一度Nameを追加する場合は、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()クラスのメソッドを使用して同等性をチェックすることに注意してください。したがって、チェックのために単純な文字列をセットに入れるか、Nameクラスに適切なものを記述して、IEqualityComparerそのインスタンスをハッシュセットのコンストラクターに入れます。GetHashCode優れた実装を作成するための支援が必要な場合は、このSOの質問を調べてください。

于 2012-08-07T06:45:44.203 に答える