有这么一道面试题
给定一句英文,求其中出现频率高于2次的字母(不分大小写)及其出现次数,按出现次数从大到小顺序输出。
乍一看挺简单,其实用传统的算法写起来还是费点功夫的。
用C#的LING写的话就非常简单直观了。一个链式查询语句就可以搞定了。
下面是我实际写出的代码。
using System;
using System.Linq;
namespace test
{
class Program
{
static void Main(string[] args)
{
string w = "Work with Language-Integrated Query (LINQ)";
var ret = w.Where(ch => char.IsLetter(ch))
.Select(ch => char.ToLower(ch))
.GroupBy(ch => ch)
.Select(g => new { k = g.Key, cnt = g.Count() })
.Where(o => o.cnt > 2)
.OrderByDescending(o => o.cnt);
foreach (var o in ret)
{
Console.WriteLine(o);
}
}
}
}