计算给定String Haskell中Char的实例数

时间:2013-10-10 13:25:42

标签: string haskell char

简单的问题。

给定一个字符串,我希望能够输入一个字母,然后让我的函数计算字母出现在字符串中的次数。

countLetters :: String -> Char -> Int

如何做到这一点?

2 个答案:

答案 0 :(得分:10)

使用

countLetters :: String -> Char -> Int
countLetters str c = length $ filter (== c) str

这只会使str中的字符等于c,然后计算其长度。

答案 1 :(得分:1)

这取决于您要对一个String进行的通话次数。简单的解决方案是只读取字符串中的每个字符,如果它与您要查找的字符匹配,则增加计数器。

现在,如果您使用计数器映射某些内容,显然可以使用fold

countLetters xs x = foldl (\count char -> if char == x then (count + 1) else count) 0 xs

但是,如果要进行许多查询,首先构建查找表(即 sort )更有意义。然后你可以在O(1)中得到任意字符的重复次数(整个算法仍然是O(n))。