【问题标题】:Compare 7 words to eachother to see if 5 of them are equal. How?比较 7 个单词,看看其中 5 个是否相等。如何?
【发布时间】:2011-01-23 10:52:17
【问题描述】:

数组中有七个单词:

string[7] = {x,x,x,x,x,x,x};

x 是从另一个数组生成的:

string[4]={a,b,c,d};

这意味着每个 x 可以是 a 或 b 或 c 或 d。它是随机生成的。这可能是一个例子:

string[7]= {a,a,d,a,a,c,a}

我的问题是如何检查是否有五个 x 具有相同的值?

这是针对我正在开发的扑克应用程序。

【问题讨论】:

    标签: c# string random compare


    【解决方案1】:

    您可以使用 Linq 找到最大数量的相等项目并测试是否为 5 或更多:

    int maxCount = s.GroupBy(x => x).Select(x => x.Count()).Max();
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

          List<string> values = new List<string> {"a", "a", "d","a", "a", "c", "a"};
      
          int count = values.FindAll(id => id == "a").Count();
      

      【讨论】:

      • 这只会找出“a”值的数量。请记住,他正在寻找 5 个匹配的值 - 但这些值可以是任何值。
      【解决方案3】:

      您可以将相似的项目分组并找到它,任何组有五个或更多

      from word in new [] { "a", "a", "a", "b", "a", "a", "b" }
      group word by word into wordGroup
      where wordGroup.Count() >= 5
      select wordGroup.Key
      

      【讨论】:

        【解决方案4】:

        对数组进行排序,之后你确定如果有五个或多个相同的值,中间的值就是其中之一。数一数:

        Array.Sort(words);
        int cnt = 0;
        Array.ForEach(words, s => { if (s == words[3]) cnt++; });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-08
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 2014-09-20
          • 2017-03-24
          • 2017-05-02
          • 1970-01-01
          相关资源
          最近更新 更多