Haskell实现最长回文子串

原创
2019/10/27 08:37
阅读数 309

本来想用C来实现,一时语塞,没写出来,先来一个haskell实现的验证吧!

首先,要来一个函数,获取所有的字串:

substring s = tail . inits =<< tails s

好,有了所有字串,然后过滤回文字串,按长度降序排序,获取第一个!

import Data.List
import Data.Ord
longestPalindrome = head . sortBy (comparing (Down . length)) .  filter (\x-> x == reverse x) . substring

👌了

测试一下:

Prelude Data.List Data.Ord> longestPalindrome "babad"
"bab"
Prelude Data.List Data.Ord> longestPalindrome "cbbd"
"bb"
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部