假设我有两个整数列表:
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/