我正在寻找是否有一个开箱即用的ICollection<T>
具有以下特征:
- 实现
.Equals(object other)
,并定义为相同T
s的相同计数 GetHashCode()
实现- [Bonus]:不可变,并进行滚动哈希,以便我可以添加/减去
T
s
为了清楚起见,示例:
| A | B | A.Equals(B) |
=============================================================
| [1,1,2] | [1,2,1] | true |
-------------------------------------------------------------
| [1,1,2] | [1,1,3] | false |
-------------------------------------------------------------
| [1,5,2,5] | [1,5,2,5] | true |
-------------------------------------------------------------
| [1,5,2,5] | [5,5,1,2] | true |
-------------------------------------------------------------
| ['a','t'] | ['t'] | false |
-------------------------------------------------------------
| ['a','t'] | ['t','a'] | true |
-------------------------------------------------------------
主要的用例是用于像https://leetcode.com/problems/coin-change-ii/这样的问题中的记忆
Python有一个开箱即用的方法,每个硬币的计数可以作为数组传入并自动记忆。在C#中做这些问题时,我总是不得不重新发明轮子。也许是因为我不知道一些有用的C#数据结构来实现这一点。
1条答案
按热度按时间s4n0splo1#
没有内置的方法来检查两个列表是否 * 等价 *,而不是 * 顺序相等 *。但是,您可以检查给定列表的所有元素是否包含在另一个列表中,反之亦然: