`
king_tt
  • 浏览: 2260006 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

uva 11404 Palindromic Subsequence(LCS回文串,最小字典序)

 
阅读更多


本文出自 http://blog.csdn.net/shuangde800




题目点击打开链接


题目大意

给一个字符串,输出它的最长回文串,如果有多个结果,输出字典序最小的。


思路

我们都知道把一个字符串逆序后和原字符串进最长公共子序列,可以计算出它的最长回文串长度。
但是这题不仅要输出回文串,而且还要求是字典序最小的,所以挺难搞的。

设str1是正序字符串,str2是逆序后的字符串
f[i][j].len 表示str1的前i位,str2的前j位,最长公共子串的长度
f[i][j].str 表示str1的前i位,str2的前j位,最长公共子串的最小字典序的字符串

状态转移和正常的LCS差不多,只不过增加了记录字典序最小的字符串

但是最终的f[i][j].str却并不一定是答案,因为计算出来的最长公共子序列不一定就是回文串

例如:
kfclbckibbibjccbej
jebccjbibbikcblcfk

bcibbibc是他们的LCS,但是却不是回文串


但是它的前len/2个一定是回文串的前半部分
知道了前len/2,就可以直接构造出回文串的后半部分了
要注意长度的奇偶性问题


代码

<script src="https://code.csdn.net/snippets/562.js" type="text/javascript"></script>



分享到:
评论

相关推荐

    USACO题目Palindromic Squares(回文平方数)及代码解析

    USACO题目Palindromic Squares(回文平方数)及代码解析 在计算机科学和信息学中,回文数(Palindromic Number)是一种数字,它从左向右念和从右向左念都一样。例如,12321是一个典型的回文数。给定一个进制B(2,...

    python简单算法04:判断一个字符串是否为回文串的排列之一

    给定一个问题,我们需要编写一个名为`palindromic`的函数,它接受一个字符串`s`作为参数,并返回一个布尔值,表示`s`是否可以被排列成一个回文串。 首先,我们需要理解解题的关键在于字符计数。一个字符串能够构成...

    寻找字符串中最长的回文子串的长度

    Manacher's Algorithm的创新之处在于利用了回文串的对称性质来减少重复计算,通过维护一个回文半径中心P和回文右边界R,动态更新回文串的信息。当查找新位置i时,如果i在已知回文串的范围内,我们可以利用已知信息...

    c语言-leetcode题解之0516-longest-palindromic-subsequence

    c语言入门 c语言_leetcode题解之0516_longest_palindromic_subsequence

    32回文树1

    回文树是一种数据结构,专门用于高效地处理字符串中的回文串问题。回文串是指正读反读都一样的字符串,比如"madam"和"level"。在给定的标题和描述中,回文树被用来处理字符串S中回文串的各种信息。 首先,我们理解...

    longest-palindromic-subsequence:动态规划 | 第 12 组(最长回文子序列)(http

    它涉及到寻找一个字符串中最长的子序列,这个子序列即使反转后仍与原序列相同,即为回文串。在本问题中,我们不考虑子序列中字符的顺序,只关注字符的选择。 动态规划是解决此类问题的有效方法。动态规划是一种通过...

    Leetcode回文串拼接-leetcode_note:用于记录leetcode题目的解析

    Leetcode回文串拼接 leetcode_node 题解 该项目主要用于基于Leetcode的刷题记录,与日常学习,对Leetcode上的题目按照解题方法进行分明别类的整理。 题目列表 1.Two Sum 2.Add Two Numbers 3.Longest Substring ...

    Python实现常见的回文字符串算法

    主要介绍了Python实现常见的回文字符串算法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现

    数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现; 数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现; 数据结构问题:“最长...

    leetcode答案-Longest-Palindromic-Substring:最长回文子串

    Longest-Palindromic-Substring(最长回文子串) 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 Sample 1 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 Sample 2 输入...

    longest-palindromic-substring:最长回文子串 | 设置 1 (http

    这种方法基于回文串的特性,即任何回文串都可以看作是由一个字符或一对对称字符为中心扩展而来的。我们可以通过遍历字符串中的每个字符和每个对称字符对,然后向两侧扩展来找到最长的回文子串。以下是一个简单的Java...

    LeetCode5 Longest Palindromic Substring

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Java AC 版本

    leetcode双人赛-LeetCode:力扣笔记

    Palindromic Substring 中等 回文 ZigZag Conversion 中等 矩阵 重要 Reverse Integer 简单 字串 String to Integer (atoi) 中等 字串 麻烦 Palindrome Number 简单 字串 Container With Most Water 中等 动态规划 ...

    ACM-字符串处理专练

    5. **动态规划与字符串**:例如Longest Common Subsequence(LCS)最长公共子序列,Longest Palindromic Substring(LPS)最长回文子串,这些问题是动态规划在字符串处理中的经典应用。 6. **字符串排序与压缩**:...

    手稿_V1.05

    题目 "longest-palindromic-substring" 是LeetCode中的一个问题,要求找到给定字符串中最长的回文子串。 部分内容描述了一个C++类`Solution`,该类包含一个公共成员函数`longestPalindrome`,用于找出输入字符串`s`...

    回文数(Palindrome)是指一个正整数从前往后读和从后往前读是完全相同的数,例如 121、1331、1001 等 回文

    ### 回文数与回文素数的概念及Python实现 #### 回文数(Palindrome) 回文数是指一个正整数从前往后读和从后往前读是完全相同的数。这种数字特性使得它们在数学和计算机科学领域具有一定的研究价值。例如,121、1331...

    颜色分类leetcode-leetcode-[removed]我对Leetcode问题的解决方案

    Palindromic Substring 最长回文子串 7 Reverse Integer 整数反转 9 Palindrome Number 回文数 11 Container With Most Water 盛最多水的容器 13 Roman to Integer 罗马数字转整数 14 Longest Common Prefix 最长...

    leetcode中文版-LeetCode:LeetcodeC++/Java

    Palindromic Substring 最长回文子串 string,dp 8 String to Integer(atoi) 字符串转整数 string 13 Roman to Integer 罗马数字转整数 number,string 14 Longest Common Prefix 最长公共前缀 string 16 3Sum Closest...

    leetcode跳跃-LeCode:乐科

    Palindromic Substring 最长回文子串 6. ZigZag Conversion Z字型变换 7. Reverse Integer 整数反转 8. String to Integer (atoi) 字符串转换整数 (atoi) 9. Palindrome Number 回文数 10. Regular Expression ...

    Palindromic Substrings(C#).md

    给定一个字符串 `s`,你需要找到并输出该字符串中所有长度为偶数的回文子串的数量。 输入: 输入包含一行,为一个字符串 `s`(只包含小写字母,长度不超过 `10^5`)。 输出: 输出一个整数,表示字符串 `s` 中长度...

Global site tag (gtag.js) - Google Analytics