C# 爽点记录-1
昨晚无意间想到 Leetcode 刷道题,因为太久没刷就随便挑了道 Easy 的题来玩玩,顺便用用 C#。在这个过程中试了试 C# 中的 Linq 特性,果然好用到爆。
使用的场景为,需要对数组里面的不同元素分别进行计数,如:
1 | var arr = new List<string>{"cat", "bat","rat","dog","cat","cat","rat"}; |
最为常规的方法当然就是遍历计数了 1
2
3
4
5
6
7
8
9
10Dictionary<string,int> CountEle(List<string> arr)
{
var result = new Dictionary<string,int>();
foreach(var word in arr)
{
if(result.ContainsKey(word)) result[word]++;
else result.Add(word,1);
}
return result;
}
这样的方法简单直接,但是我对于在遍历时里面还要对于是否包含元素进行一次判断,要多写一个判断,多写一个语句感到不爽,就想着搜搜有没改进的办法,像是在 Python 里面,就可以通过 setdefault 或者 get 方法来避免键值还不存在的情况。
然后发现了 Linq 的方法,起飞。Linq 的方法思路大概就是将可遍历的元素用 Sql 的方法来处理,还是挺爽挺直观的。
1 | Dictionary<string,int> CountEle(List<string> arr) |
最后送上一个 Python 版本更加 tricky 的方法。
1 | CountEle = lambda arr: {i:arr.count(i) for i in set(arr)} |