给定一个字符串str ,任务是找到最长的偶数回文子序列的长度,除了中间的字符外,没有两个相邻的字符相同。
例子:
Input: str = “abscrcdba”
Output: 6
Explanation:
abccba is the required string which has no two consecutive characters same except the middle characters. Hence the length is 6
Input: str = “abcd”
Output: 0
方法:这个想法是形成一个递归解决方案并使用动态规划存储子问题的值。可以按照以下步骤计算结果:
- 形成递归函数,将一个字符串和字符这是序列中的起始字符。
- 如果字符串的第一个和最后一个字符与给定字符匹配,则删除第一个和最后一个字符,并使用除给定字符之外的从 ‘a’ 到 ‘z’ 的所有字符值调用该函数,因为相邻字符不能相同并找到最大长度。
- 如果字符串的第一个和最后一个字符不给定的字符匹配,然后找到字符串中的给定字符的第一个和最后一个指标,说我分别学家将子字符串从i取到j并使用子字符串和给定的字符调用函数。
- 最后,记住无序映射中的值,并在再次使用相同参数调用函数使用它。
下面是上述方法的实现:
C++
Java
Python3
C#
Javascript
输出
6
时间复杂度: O(N 2 )
辅助空间: O(N)
相关文章:最长回文子序列
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。