Haskell:两个整数列表之间的匹配次数?

标签 haskell count numbers match

假设我有两个整数列表:

4 12 24 26 35 41

42 24 4 36 2 26

两个列表之间有 3 个匹配项。

如何计算 Haskell 中任意两个列表之间的匹配次数?

谢谢。

最佳答案

如果不需要处理多个元素,最简单的方法是计算交集的长度

import Data.List

matches :: Eq a => [a] -> [a] -> Int
matches xs ys = length (intersect xs ys)

使用 Set 效率更高s 作为中间结构,如果您还有 Ord实例:
import qualified Data.Set as S

matches :: Ord a => [a] -> [a] -> Int
matches xs ys = S.size (S.intersection (S.fromList xs) (S.fromList ys))

如果您需要处理重复,请使用 Map计算每个元素的出现次数将是一个不太困难的修改。

关于Haskell:两个整数列表之间的匹配次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518940/

相关文章:

ios - iOS中的随机数?

haskell - 从 Haskell 调用 ARPACK++(一个 C++ 库)会涉及什么?

sql - 我怎样才能得到总数?

mysql - 计算具有相同标识符的多个表mysql

python - 计算 python 中的特定字母组而不排除它们

algorithm - 从集合中以相等概率选择数字

java - 数字解析库

haskell - 相等的模式匹配

在 Haskell 中计算倍数(从 C 转换)?

haskell - 在Haskell中,使用和不使用let有什么区别?