【问题标题】:Best Way to Sort and Count the Occurence of a String? [closed]排序和计算字符串出现次数的最佳方法? [关闭]
【发布时间】:2014-02-27 04:54:13
【问题描述】:

我有一段时间没有接触 C#.NET,所以我对此感到很生疏。我有一个问题希望有人可以在这里回答。

我有一个接受字符串输入的程序。我的目标是让它每隔 XX 秒运行一个私有函数,该函数将接受输入并将它们分类为最常用的字符串,返回最常用的单词,然后擦除输入以准备下一批。

例如,如果程序要求输入最喜欢的颜色,并且 10 个用户输入诸如“RED”“BLUE”“RED”“ORANGE”“PINK”“ORANGE”“RED”“BLUE”“GREEN”“BLACK”之类的内容" 我希望函数首先查看并找出 RED 被说了 3 次(因此应该返回 RED)。

但是对于我的生活,我的大脑正在让我失望。我很确定我需要一个数组,但我不记得如何根据该数组中字符串的出现来对其进行排序。

明智的伪代码,我想我需要类似的东西

数组[单词,计数器]

如果(单词已经存在)counter++ else(添加单词,将计数器设置为 1)

然后只需按计数器排序。

但是,如何在 C# 中实际实现它... welp...

我知道这是一个愚蠢的问题,但 Google 会返回一堆过于复杂或完全不相关的东西。因此,感谢您对此的任何帮助!

【问题讨论】:

    标签: c#


    【解决方案1】:

    你可以使用LINQsGroupBy,按count降序排序,抓取第一项:

    var list = new List<string>() {"RED", "BLUE", "RED", "ORANGE", "PINK", "ORANGE", "RED", "BLUE", "GREEN", "BLACK"};
    
    Console.WriteLine(list.GroupBy(x => x)
                          .OrderByDescending(x => x.Count())
                          .First().Key); // RED
    

    【讨论】:

      【解决方案2】:

      做这样的事情来存储颜色:

      List<string> colors = new List<string>();
      

      然后做这样的事情来阅读它们:

      colors.Add(Console.ReadLine());
      

      然后使用这样的函数来找出最常见的颜色:

      private string GetMostCommonColor ()
      {
          return (from i in list
                 group i by i into grp
               orderby grp.Count() descending
                select grp.Key).First();
      }
      

      更多信息请参见this StackOverflow question

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-28
        • 1970-01-01
        相关资源
        最近更新 更多