在字符串数组中打印出具有特定字符的大多数出现的字符串

时间:2015-01-10 13:10:43

标签: c# arrays string loops

我需要从字符串数组中打印出字符串,该字符串数组具有特定字符的最多次出现。

示例:

{"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];
 }

4 个答案:

答案 0 :(得分:1)

试试这个: -

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

Working Fiddle

答案 1 :(得分: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;

答案 2 :(得分:0)

您可以使用LINQ轻松完成:

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

答案 3 :(得分: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();