gpt4 book ai didi

c# - 查找字符串中出现频率第二高的字符

转载 作者:行者123 更新时间:2023-12-02 21:30:56 26 4
gpt4 key购买 nike

我想找到字符串中出现频率第二高的字符。例如:abccdddd

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();

最佳答案

您仅存储 items 中出现的次数。您还应该存储字符:

var items = di.OrderByDescending(x => x.Value).ToList();

return items[1].Key;

另外,为什么以0开头?您可能应该将 1 添加到字典中(当字典尚不存在时):

else
{
di.Add(input[i].ToString(), 1);
}

更新

只是想让您知道,使用 LINQ 可以轻松解决此问题:

return input.GroupBy(x => x).OrderByDescending(x => x.Count()).ElementAt(1).Key;

关于c# - 查找字符串中出现频率第二高的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com