如何通过从给定字符串中删除一个字符来获取字符串列表?

时间:2014-11-15 17:49:15

标签: string haskell character

给一个字符串我想创建一个字符串列表,其中我从初始字符串中删除一个字符后形成了所有字符串。前妈妈 - > [ama,mma,maa,mam]。

我试过了:

delete1 :: String -> [String]
delete1 xs = [delete c (c:xs) |c <- xs]

但它没有改变任何东西。我怎样才能做到这一点 ?

2 个答案:

答案 0 :(得分:1)

这应该适合你:

delete :: String -> [String]
delete [] = []
delete (x:xs) = xs : map (x:) (deleted1 xs)

答案 1 :(得分:0)

你正在做的事情(几乎)会起作用,但你正在重新增加价值......

你意识到了

delete x (x:theList)

只是

theList

不是吗?

基本上,(x:theList)告诉计算机将x添加到列表中,而delete x告诉计算机从列表中删除第一个x

这几乎可行

[delete c xs |c <- xs]

但要记住,删除只删除第一次出现的char,所以你永远不能从妈妈那里删除第二个'm'(即 - 使用删除你不能得到“maa”)

@ user5402已经展示了另一个更好的解决方案,我在此不再赘述。

相关问题