【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で必要になったので、メモとして残します