【发布时间】: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 具有相同的值?
这是针对我正在开发的扑克应用程序。
【问题讨论】:
数组中有七个单词:
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 具有相同的值?
这是针对我正在开发的扑克应用程序。
【问题讨论】:
您可以使用 Linq 找到最大数量的相等项目并测试是否为 5 或更多:
int maxCount = s.GroupBy(x => x).Select(x => x.Count()).Max();
【讨论】:
你可以这样做:
List<string> values = new List<string> {"a", "a", "d","a", "a", "c", "a"};
int count = values.FindAll(id => id == "a").Count();
【讨论】:
您可以将相似的项目分组并找到它,任何组有五个或更多
from word in new [] { "a", "a", "a", "b", "a", "a", "b" }
group word by word into wordGroup
where wordGroup.Count() >= 5
select wordGroup.Key
【讨论】:
对数组进行排序,之后你确定如果有五个或多个相同的值,中间的值就是其中之一。数一数:
Array.Sort(words);
int cnt = 0;
Array.ForEach(words, s => { if (s == words[3]) cnt++; });
【讨论】: