【C#】DictionaryでValueにListを指定する

Keyに対して複数の値をもたせたかったので、ValueにListを指定することで解決しました。

記述法

今回は、longのListにしています。

Dictionary<char, List<long>> dict = new Dictionary<char, List<long>>();

実装

ある文字列sとtを与えて、sを構成する各文字種がsのどの位置にでてくるのか調べます

string s = Console.ReadLine();
string t = Console.ReadLine();
Dictionary<char, List<long>> dict = new Dictionary<char, List<long>>();
for (int i = 0; i < s.Length; i++)
{
    if (!dict.ContainsKey(s[i]))
    {
        dict.Add(s[i], new List<long>());
        dict[s[i]].Add(i);
    }
    else if (dict.ContainsKey(s[i]))
    {
        dict[s[i]].Add(i);
    }

そして、下記でtを構成する文字種がsのどの位置に存在しているのか確認します。

for (int i = 0; i < t.Length; i++)
{
    Console.WriteLine(string.Join(" ", dict[t[i]]));
}

入出力結果

contest // input : s
son // input : t
5 // sのindex
1 // oのindex
2 // nのindex

感想

AtCoderで必要になったので、メモとして残します