我想找到字符串中字符的第二高频率.例如:abccddd
O/p应该是:c
我试着用字典.我将所有内容存储在字典中.而且,我也在整理它.现在我不知道该怎么办.
string input = tb_input.Text;
Dictionary<string, int> di = new Dictionary<string, int>();
for (int i = 0; i < input.Length; i++)
{
if (di.ContainsKey(input[i].ToString()))
{
int value = di[input[i].ToString()];
value++;
di[input[i].ToString()] = value;
}
else
{
di.Add(input[i].ToString(), 0);
}
}
var items = di.Values.ToList();
items.OrderByDescending(x => x).ToList();
Run Code Online (Sandbox Code Playgroud)
你只存储了出现次数items
.你也应该存储角色:
var items = di.OrderByDescending(x => x.Value).ToList();
return items[1].Key;
Run Code Online (Sandbox Code Playgroud)
另外,你为什么开始0
?你可能应该添加1
到字典中,当它还没有时:
else
{
di.Add(input[i].ToString(), 1);
}
Run Code Online (Sandbox Code Playgroud)
更新
只是为了让您知道,使用LINQ可以轻松解决:
return input.GroupBy(x => x).OrderByDescending(x => x.Count()).ElementAt(1).Key;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
634 次 |
最近记录: |