有这么一道面试题

给定一句英文,求其中出现频率高于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);
            }
        }
    }
}
Last modification:May 25, 2021
If you think my article is useful to you, please feel free to appreciate