gpt4 book ai didi

haskell - 单个字符串的所有子序列

转载 作者:行者123 更新时间:2023-12-02 04:07:56 25 4
gpt4 key购买 nike

如何从单个字符串中提取所有可能的子字符串?我想出了一种比较麻烦的方法,想找一个更简单的方法。

subStrings :: String -> [String]
subStrings xs = xs : takeEl xs

takeEl :: String -> [String]
takeEl xs = nub (concat [y : (takeEl y) | y <- takeEl'])
where
takeEl' = [del y xs | y <- [0..(length xs - 1)]]

del :: Int -> [a] -> [a]
del k xs = take k xs ++ drop (k+1) xs

我想用一个例子进一步解释一下:如果我在“abc”上使用该函数,我希望它创建一个包含以下元素的列表,没有排列(如果有“ab”,则不需要“ba”)。

`["abc", "a","b","c","ab","ac","bc",""]`

所以连接 inits 。 tails 是不够的,因为它不会给我“ac”。

最佳答案

Data.List 模块提供 subsequences ,这是正确的名称。 (子字符串是连续的。)

关于haskell - 单个字符串的所有子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com