如何遍历字符串列表?

时间:2018-06-22 01:38:38

标签: haskell

我想输入一个单词列表。如果一个单词的最后一个字母与另一个单词的第一个字母相同,则我们将它们连接起来并输出包含所有可能连接的列表列表。

示例:convert(["apple","elephant","eraser", "tower","rank"])将给出

[["elephant", "eraser"], ["tower"], ["rank"], ["rank"], []]

我实现了以下代码:

convert :: [String] -> [[String]]
convert [] = []
convert [x] = []
convert (x : xs) = if last x == head (head xs)
    then [head xs] : [] : convert (x : (tail xs))
    else convert (x : (tail xs))

但这只能检查第一个元素。如何遍历整个列表并检查每个单词?

================================================ ==========================

好的。我完成了。

convert :: [String] -> [[String]]
convert [] = []
convert (x:xs) = [u | u <- xs, last x == head u] : convert (xs)

0 个答案:

没有答案