繁体   English   中英

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

[英]Count number of Instances of Char in a given String Haskell

简单的问题。

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

countLetters :: String -> Char -> Int

如何才能做到这一点?

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

这只得到str中等于c的字符,然后计算它的长度。

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

现在,如果你用计数器映射某些东西,你显然可以使用fold

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM