を、このコンパイルエラーを把握助けることができます最適化されたオーバーロードされたメソッドは、 と一致します。 'System.Collections.Generic.Dictionary> .Dictionary(int)' に無効な引数があります。コンパイルエラー(行13、列5): 引数1: から変換できません 'System.Collections.Generic.IEnumerable >>' 'int'最終実行日:8:16:27 pmコンパイル:0s実行:0.188sメモリ:0B CPU:私は、キーと値のペア
で辞書を初期化しようとしている私のコード[1] = new Dictionary<string,int>(), [2] = new Dictionary<string,int>(), . . . [21] = new Dictionary<string,int>()
using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static void Main(String[] args) { int N = Int32.Parse(Console.ReadLine()); var counter = new Dictionary<int, Dictionary<string, int>> ( Enumerable.Range(1,21) .Select(i => new KeyValuePair<int, Dictionary<string, int>>(i, new Dictionary<string, int>())) ); for(int i = 0; i < N; ++i) { string[] input = Console.ReadLine().Split(' '); switch(input[0]) { case "add": for(int j = 1; j < input[1].Length; ++j) { string sub = input[1].Substring(0,j); if(counter[j].ContainsKey(sub)) counter[j][sub] += 1; else counter[j][sub] = 1; } break; case "find": Console.WriteLine ( counter[input[1].Length].ContainsKey(input[1]) ? counter[input[1].Length][input[1]] : 0 ); break; default: break; } } } }
の
Enumerable.Range(1,21)
部分を指している0
また、C#には、(この問題の場合はhttps://www.hackerrank.com/challenges/contactsの)部分文字列の高速検索で文字列のコレクションを保持しようとすると、より良いデータ構造があるのか不思議です。
あなたは 'Enumerable.Range(1,21).ToDictionary(トン=>トン、新しい辞書を())を使用することができます;' –
Saravanan
共有コードの小さな修正@Saravanan。それは 'var counter = Enumerable.Range(1、21).ToDictionary(t => t、t =>新しい辞書()); ' –
@ChetanRanpariya:あります:) – Saravanan