2

我正在尝试创建一个动态数组来存储字符串的频率。我已将字符串转换并放入列表中。将值添加到整数列表。但是找不到增加列表中默认值的方法。

List<int> size = new List<int>();

List<char> frequency = new List<char>();

frequency = line.ToList();
for (int i = 0; i < frequency.Count; i++)
{
      size.Insert(i, 0);
}
foreach (char t in frequency)
{
     size.Add(new int(1, (int)t));
}
4

2 回答 2

2

您可以使用 LINQ 将字符频率转换为字典结构。这假设 case 无关紧要c == C。但是您可以通过删除Char.ToUpper()呼叫来更改它。

List<String> lines = new List<string>() { "This is", "my", "sentence" };

var charFreq = String.Join("", lines).GroupBy(x => Char.ToUpper(x))
                                     .ToDictionary(x => x.Key, x => x.Count());

上述lines列表的输出将是

T, 2
H, 1
I, 2
S, 3
 , 1
M, 1
Y, 1
E, 3
N, 2
C, 1
于 2013-06-30T18:21:27.933 回答
2

那么……你想要一个具有默认值的字典,然后呢?还是这样的?

Dictionary<char, int> frequencies = new Dictionary<char, int>();

foreach(char c in line) {
    if(frequencies.ContainsKey(c)) {
        frequencies[c]++;
    } else {
        frequencies.Add(c, 1);
    }
}
于 2013-06-30T18:13:50.983 回答