我有
var mostFrequentlyUsedEntriesOfList = inputList.GroupBy(word => word)
.Select(wordGroup => new { Word = wordGroup.Key, Frequency = wordGroup.Count() })
.OrderByDescending(word => word.Frequency);
创建具有密钥和频率的对象。
我必须添加到mostFrequentlyUsedEntriesOfList,还有积累点的起点?我的意思是:
示例inputList:
a
a
b
b
a
a
b
b
a
b
b
b
b
b
a
会导致
b 9
a 6
积累点的起点是(将第一项计为1)
b 10
因此b发生的起点位于第10位。
共:
Word frequency position
b 9 10
a 6 1
注意:a从1和5开始,频率相同,因此请选择相同频率的第一个。
如果某事只发生一次,那么这就是积累点,例如如果开头有一个c:
c 1 1
我必须添加到mostFrequentlyUsedEntriesOfList,还有积累点的起点?
答案 0 :(得分:1)
var mostFrequentlyUsedEntriesOfList = inputList
.GroupBy(word => word)
.Select(wordGroup => new
{
Word = wordGroup.Key,
Frequency = wordGroup.Count(),
Position = Enumerable.Range(0, inputList.Count())
.OrderByDescending(index => inputList.Skip(index).TakeWhile(current => current == wordGroup.Key).Count())
.First() + 1
})
.OrderByDescending(word => word.Frequency);
通过迭代所有索引,查看序列从那里运行多长时间,并选择最大值的索引,找到最长的运行。