给一个字符串我想创建一个字符串列表,其中我从初始字符串中删除一个字符后形成了所有字符串。前妈妈 - > [ama,mma,maa,mam]。
我试过了:
delete1 :: String -> [String]
delete1 xs = [delete c (c:xs) |c <- xs]
但它没有改变任何东西。我怎样才能做到这一点 ?
答案 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已经展示了另一个更好的解决方案,我在此不再赘述。