2015-01-10 41 views
2

我需要從字符串數組中打印出字符串,該字符串數組中出現的特定字符數最多。在字符串數組中輸出出現特定字符的大部分字符串

例子:

{"I","have","feelings"} , 'e'打印 「感情」。

{"doodlidoo","foo","moon"} , 'o'打印「doodlidoo」。

到目前爲止,我已經想出了這個,它發現每個字符串的長度。我只需要弄清楚如何打印單個字符串。

public static String MostLettersInWord(String[] list, char c) 
{ 
    for (int x = 0; x < list.Length; x++) 
    { 
     int count = list[x].Split(c).Length - 1; 
    } 
    return list[0]; 
} 

回答

0

有這樣做的方法很多,但通過自己的方式去和保持它的簡單和基本的,只是在這裏補充的比較功能

string answer; 
int prevCount = 0, count = 0; 
for (int x = 0; x < list.Length; x++) 
{ 
    int count = list[x].Split(c).Length - 1; 
    if(count>prevCount) 
    { 
     answer = list[x]; 
     prevCount = count; 
    } 


} 
return answer; 
+0

謝謝,這並獲得成功:) – Egon

0

你可以用LINQ輕鬆地做到這一點:

string result = list.OrderByDescending(str => str.Max(m => m == c)).First(); 
1

試試這個: -

var word = words.OrderByDescending(x => x.Count(z => z == c)).First(); 

Working Fiddle

0

想尋找具有特定字符相同的最大數量的所有單詞下面的查詢將選擇他們:

List<string> words = new List<string> { "I", "have", "feelings", "meet" }; 

char ch = 'e'; 
var results = 
    words 
    .Where(w => w.Contains(ch)) 
    .Select(w => new 
    { 
     Word = w, 
     CharCount = w.Count(c => c.Equals(ch)) 
    }) 
    .OrderByDescending(x => x.CharCount) 
    .GroupBy(x => x.CharCount) 
    .First() 
    .Select(x => x.Word) 
    .ToList(); 
相關問題