#刷题交流# 小U的好字符串
算法步骤
定义状态:
设 dp[i][j] 表示以字符 s[i] 结尾且长度为 j 的子序列中好字符串的数量。
状态转移:
对于每个字符 s[i],我们需要考虑所有可能的长度 j 的子序列。
如果 s[i] 与之前的某个字符 s[k] 相同(k < i),那么以 s[i] 结尾且长度为 j 的子序列中,长度为 j-1 的子序列不能以 s[k] 结尾,因为这样会形成回文子串。
初始化:
对于每个字符 s[i],长度为1的子序列总是好字符串,所以 dp[i][1] = 1。
最终结果:
我们需要计算所有长度为 j 的子序列中好字符串的总数,并对结果取模 10^9 + 7。
展开
评论