子列表在列表中的位置haskell

时间:2014-07-27 14:08:29

标签: string list haskell sublist

好的,所以我试图编写一个函数来确定另一个字符串中字符串的位置,如果第一个字符串是第二个字符串的子列表。说那里有一个像#"馅饼"和另一个喜欢" applepie",函数将返回5,因为"馅饼"在#34; applepie"

的字符串中的位置5

有没有人知道我该怎么做?

1 个答案:

答案 0 :(得分:2)

查看this问题。几天前它被问及(并回答)并且涵盖完全您的问题。

我的解决方案:

findStr :: String -> String -> Maybe Int
findStr pat str = findStrHelp pat str 0
  where
    findStrHelp _ [] _ = Nothing
    findStrHelp pat s@(x:xs) n
      | pat == (take (length pat) s) = Just n
      | otherwise = findStrHelp pat xs (n+1)

要获得此代码,请删除findStrHelp _ [] _行并将Just n更改为n。同时将类型签名中的Maybe Int更改为Int