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.
Example 1:
Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example 2:
Input: “cbbd”
Output: “bb”
解题思路
题目要求所给字符串的最长回文子字符串。
解法一
暴力求解。任选子字符串的两端,并验证该字符串是否为回文字符串,由于端点的两两选择需要\(O(n^2)\)的复杂度,验证字符串需要\(O(n)\)的复杂度,所以整个算法需要\(O(n^3)\)的时间复杂度。
解法二
并不需要对每个字符串都进行回文字符串的验证,假如一个字符串是回文字符串,那么如果其两侧的字符相同,则新的字符串也是回文字符串,这样就不用对新的字符串进行从头到尾的验证,从而把时间复杂度从\(O(n)\)降为\(O(1)\)。由所给的两个样例可以看出,回文字符串根据字符串的长度可分为奇偶两种,因此只要选好中心位置,沿着中心位置向两边进行扩展,就能得到该中心位置的最长回文字符串,遍历所有中心位置,就能得到最长的回文字符串,总的时间复杂度为\(O(n^2)\)。
源代码
1 | class Solution { |