求助编写Haskell递归函数noDupl:判断字符串无重复字符
实现Haskell递归函数
noDupl 这里是满足需求的递归实现:
noDupl :: String -> Bool noDupl [] = True noDupl (x:xs) = not (x `elem` xs) && noDupl xs
逻辑说明
- 基本情况:空字符串没有任何字符,不存在重复,直接返回
True;单个字符的字符串拆分后xs为空,同样满足条件返回True。 - 递归步骤:将输入字符串拆分为首字符
x和剩余子串xs:- 用
elem检查x是否在xs中,若存在则说明有重复,返回False; - 若
x不在xs里,就递归调用noDupl检查剩余子串xs是否也无重复,只有前后条件都成立时才返回True。
- 用
示例验证
noDupl "abcde" -- 输出 True noDupl "aabcdee" -- 输出 False
内容的提问来源于stack exchange,提问作者user2367
相关产品推荐
相关产品推荐

