简单的问题。
给定一个字符串,我希望能够输入一个字母,然后让我的函数计算该字母在字符串中出现的次数。
countLetters :: String -> Char -> Int
如何才能做到这一点?
和
countLetters :: String -> Char -> Int
countLetters str c = length $ filter (== c) str
这仅获取str
equal中的字符c
,然后计算其长度。
这取决于您要拨打的电话数量 one String
。简单的解决方案是只读取字符串中的每个字符,如果它与您要查找的字符匹配,则增加计数器。
现在,如果您使用计数器映射某些东西,您显然可以使用fold
:
countLetters xs x = foldl (\count char -> if char == x then (count + 1) else count) 0 xs
然而,如果你想做很多查询,首先建立查找表(即排序)更有意义。然后就可以得到in中任意字符的重复次数O(1)
(整个算法还是O(n)
)。