您的位置:首页 > 其它

214Shortest Palindrome

2015-12-17 19:16 351 查看
首先需要知道KMP,其次假设原串是s

造一个新串 s#s'  其中s'是s的完全反过来

然后我们只需要知道新串开头最长的回文串是什么,问题就迎刃而解了。

而想要知道这个,就利用KMP中的next数组即可,且只看最后一位。

比如最后一位next值为i  (我们假定这个值表示0~i和 n-i~n)之间是相同的

假设n-i ~n  为 a0a1...ai

根据构造知 0~i为  aiai-1...a1a0

从而 a0a1...ai= aiai-1...a1a0 也就是说 next值+1=回文串的长度!!从而简单了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: