最长回文子串

Given a string s, find the longest palindromic substring in s.

You may assume that the maximum length of s is 1000.

Example:

Input: "babad"

Output: "bab"

Note: "aba" is also a valid answer.

Example:

Input: "cbbd"

Output: "bb"

如果事先知道子串长度,可以从左右往里判断字符是否相等,可本题无法事先得知子串长度。

于是将遇到的字符当作“最中间”向外扩展成了比较合理的选项。开始考虑的是分为奇偶回文,如例子中的两种情况。后来看到一种更简洁的方法,每次把所有和最中间字符相同的字符都略去,等于看成“最中间”所有相等的字符(如果有)看作一体,这样就省去来判断奇偶的步骤。另外注意到,如果剩余的字符串长度不超过当前最长回文长度的一半,就可以提前跳出循环了。


另外,字符串类的题,还是用 C++ 的 string 写的方便,以后的算法题打算用C语言 + C++ string 来写,省去一些低级的字符处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容