-2

2つの文字列配列があると仮定しましょう

string[] array1 = {"aa", "bb", "cc"};
string[] array2 = {"bb", "aa", "cc", "bb", "aa", "cc"};

これで、array2の文字列bbはarray1の2番目の位置にあるため、出力は2になります。

array2のaaはarray1の最初の位置にあるため、出力は1になります。

array2のccはarray1の3番目の位置にあるため、出力は3になります。

array2のbbはarray1の2番目の位置にあるため、出力は2になります。

すぐ..

これらの出力インデックス位置はすべて配列に格納する必要があります。

C#.netでこれを達成する方法はありますか?

4

3 に答える 3

1

このようなもの:

int[] indicies = array2.Select(n => Array.IndexOf(array1, n)).ToArray();

これにより、の要素がのインデックスarray2のシーケンスとして投影されarray1、結果が配列に変換されます。


コメントで指摘されているように、元の要件は、array1のインデックスが0であっても、「aa」を値1にマップすることでした。計算されたインデックスを1オフセットすると、次のように修正されます。

int[] indicies = array2.Select(n => Array.IndexOf(array1, n) + 1).ToArray();

この変更により、array1にない要素は、もちろん-1ではなく0のインデックスになります。

于 2012-07-17T04:41:42.387 に答える
0

しばらくの間C#をコーディングしていませんが..

ネストされたforループを使用して、array1の配列2に指定された文字列が含まれているかどうかを確認します。含まれている場合は、インデックスを格納します。array1は、すべてのインデックスの格納に使用する配列でオンになっています。

また、出力を格納する配列については、array2のサイズを指定します。

幸運を!:)

于 2012-07-17T04:48:49.250 に答える
0

これが宿題または同様の学習演習であると仮定して、ここにいくつかのガイダンスがあります:

array2位置を見つけたい入力値のようです。

array1要素が配置される場所を決定するために使用する参照配列のようです。

  • の各要素をループしますarray2。要素を呼び出しましょうelem
  • それぞれについてelem、でインデックスを見つけますarray1
  • そのインデックスを新しい配列に追加します

参照配列内ののインデックスを把握する方法を理解するには、Array.IndexOfを参照してください。elem

于 2012-07-17T04:45:29.193 に答える