计算不同的回文序列

时间:2017-11-26 06:50:29

标签: algorithm palindrome subsequence

Source Leetcode

给定一个字符串S,找到S中不同的非空回文子序列的数量,并以10 ^ 9 + 7为模数返回该数字。

通过从S中删除0个或多个字符来获得字符串S的子序列。

如果序列与反转序列相等,则序列是回文序列。

如果有一些i为A_i!= B_i,则两个序列A_1,A_2,...和B_1,B_2,...是不同的。

示例1: 输入: S =' bccb'

输出:6

说明: 6个不同的非空回文子序列是'' c'' bb',' cc',' bcb& #39;,' bccb'。

请注意' bcb'只计算一次,即使它出现两次。

Sol 1。鉴于解决方案here,它看起来非常不直观

Sol 2。我理解的其他解决方案是找到所有回文子序列并使用set来保持它不同但输出可能非常大并且将它们保留在集合中并不好想法I想。(here

有没有更好,更直观的方法来解决这个问题?

0 个答案:

没有答案