LeetCode算法入门- Longest Palindromic Substring-day5
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”
最便捷的方法:时间复杂度0(n),空间复杂度0(1)
使用中心扩散法:我们可以从一个中心点出发,然后慢慢向左右两边进行扩散,然后获取当前其最长字符串,最后取出最终最长的字符串。
不过这样的话就要分成两种情况:因为中心对称有两种,一种是奇数对称,一种是偶数对称
class Solution {String longestStr = "";public String longestPalindrome(String s) {for(int i = 0; i < s.length(); i++){//奇数helper(s,i,0);//偶数helper(s,i,1);}return longestStr;}public void helper(String s, int start, int offset){int left = start;int right = start + offset;while(left >= 0 && right < s.length() &&s.charAt(left) == s.charAt(right)){left--;right++;}//取当前最大字符串,substring方法:左边取,右边不取,这里left记得加1,right不变,因为上面left减了1String curLongest = s.substring(left + 1, right);if(curLongest.length() > longestStr.length())longestStr = curLongest;}
}