论坛首页 综合技术论坛

一个类似ruby Stirng#split的算法

浏览 1841 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-31   最后修改:2009-08-31
请指教会否有性能问题。
splitByList xs ys =
  let s = foldr1 (\a b ->
                      filter (\c ->
                                any ((==) (c + 1)) b
                             ) a
                   ) $ map (\x ->
                              elemIndices x ys
                           ) xs in
  map (\(a, b) ->
         drop a $ take b ys
      ) $ foldl (\a b ->
                   a ++ [((snd $ last a) + (length xs), b)]
                ) [(0, head s)] ((tail s) ++ [length ys])
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics