Может кто-то помочь мне понять эту ошибку компиляцииЛучший перегружен матч метод 'System.Collections.Generic.Dictionary <Int, System.Collections.Generic.Dictionary <string,int>> .Dictionary (интермедиат)'
Ошибка компиляции (строка 10, столбец 17): наилучший перегруженный метод соответствует для 'System.Collections.Generic.Dictionary> .Dictionary (int)' имеет некоторые недопустимые аргументы Ошибка компиляции (строка 13, col 5): Аргумент 1: невозможно преобразовать из 'System.Collections.Generic.IEnumerable >>' в 'int' Последний запуск: 8:16:27 pm Скомпилировать: 0s Выполнить: 0.188s Память: 0B CPU: 0s
, что указывает на Enumerable.Range(1,21)
часть моего кода
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;
}
}
}
}
Я пытаюсь инициализировать словарь с парами ключ-значение
[1] = new Dictionary<string,int>(),
[2] = new Dictionary<string,int>(),
.
.
.
[21] = new Dictionary<string,int>()
Также мне любопытно, имеет ли C# лучшую структуру данных для попытки хранения коллекции строк с быстрым поиском подстрок (для этой задачи https://www.hackerrank.com/challenges/contacts).
Вы можете использовать 'Enumerable.Range (1,21) .ToDictionary (т => т, новый словарь());' –
Saravanan
@Saravanan Небольшая поправка в коде вы поделились. это должно быть 'var counter = Enumerable.Range (1, 21) .TDDictionary (t => t, t => новый словарь());' –
@ChetanRanpariya: получил это :) – Saravanan