有这么一道面试题

给定一句英文,求其中出现频率高于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);
            }
        }
    }
}

版权属于:芒果爱吃胡萝卜

本文链接:http://mangolovecarrot.net/2021/05/25/linq01

转载时须注明出处及本声明

Last modification:May 25th, 2021 at 03:27 am