2010-03-03 6 views
6

Ich habe sieben Wörter in dem Array:Vergleichen Sie 7 Wörter miteinander, um zu sehen, ob 5 von ihnen gleich sind. Wie?

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

der x von einem anderen Array erzeugt wird:

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

dass jede x bedeutet, können entweder a oder b oder c oder d ist. Es wird zufällig generiert. Dies könnte ein Beispiel sein:

meine Frage ist, wie kann ich überprüfen, ob es fünf x, die den gleichen Wert hat?

Dies ist für eine Poker-App Im arbeiten an.

Antwort

10

Sie Linq verwenden können, die größte Anzahl von gleich Elementen und Test zu finden, wenn diese 5 oder mehr beträgt:

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

__ ** slick! ** __ –

+0

Liebst du nicht nur Linq? – HaxElit

+0

Danke. arbeitete wie Charme. : D Sehr nützlich! – hafhadg3

1

Sie kann Gruppe der ähnlichen Produkte und jede Gruppe finden haben fünf oder mehr

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

Sie können es wie folgt tun:

List<string> values = new List<string> {"a", "a", "d","a", "a", "c", "a"}; 

    int count = values.FindAll(id => id == "a").Count(); 
+0

Dies würde nur die Anzahl der "a" -Werte herausfinden. Denken Sie daran, dass er nach 5 übereinstimmenden Werten sucht - aber die Werte können alles sein. –

+0

Ahh ja, ich sehe jetzt. Ich musste seine Frage erneut lesen. Vielen Dank – CodeLikeBeaker

1

sortieren das Array, nach, dass Sie sicher sind, dass, wenn es fünf oder mehr vom gleichen Wert, der mittlere Wert ist einer von ihnen. Zähle wie viele:

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