LinQ解决面试问题案例

性能与面试:

LINQ大部分时间不会影响性能,但是面试时算法题一般尽量避免使用正则表达式和LINQ等高级类库

案例一:

有一个用逗号分隔的表示成绩字符串,如“61,90,100,99,18,22,38,66,80,93,55,50,89”,计算这些成绩的平均值

C#
 //案例一:有一个用逗号分隔的表示成绩字符串,
            //如61,90,100,99,18,22,38,66,80,93,55,50,89”,
            //计算这些成绩的平均值
            string ScoreString = "61,90,100,99,18,22,38,66,80,93,55,50,89";
            //string[] Scores = ScoreString.Split(",");

            ////LINQ转换
            ////IEnumerable<int> ints = Scores.Select(i => Convert.ToInt32(i));
            
            //List<int> Scoresint = new List<int>();
            //foreach (string Score in Scores) {
                
                
            //    Scoresint.Add(Convert.ToInt32(Score));
                
            //}
            //Console.WriteLine(Scoresint.Average());

            //链式调用
            double avg = ScoreString.Split("").Select(e=> Convert.ToInt32(e)).Average();
            Console.WriteLine(avg);
案例二:

统计一个字符串中每个字母出现的频率,然后按照从高到低顺序输出出现频率高于2次的单词和其出现的频率

C#
  //案例二:
            //统计一个字符串中每个字母出现的频率,
            //然后按照从高到低顺序输出出现频率高于2次的单词和其出现的频率
            string NewString = "dhahdasjDAF,kdhaFAsjkD,dAawHfadasdhjfhkf";

            //IsLetter是否是字母,IsLower改为小写 select 投影
            var result = NewString.Where(e => char.IsLetter(e))
            .Select(g => char.ToLower(g))
            .GroupBy(e => e)
            .Select(r => new { Letter = r.Key, Frequency = r.Count()})
            .OrderByDescending(r=>r.Frequency)
            .Where(r=>r.Frequency>2);
            

            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部