leetcode 5 Longest Palindromic Substring

5. 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" |
Example:
1 | Input: "cbbd" |
这道题在卜老师的算法课上做过。
用动态规划的思想,开辟一个n*n的二维数组dp
当dp[i][j]是回文且s[i-1]==s[j+1]时,新的子字符串也是回文
注意临界点的处理,上述条件只适用于j-i > 2的情况
当j-i <= 2 时,相当于 (i) () (j) 和 (i) (j) 这两种情况,只需要判断s[i] 是否等于s[j] 即可。
临界条件同样也可以改为
1 | if((i-j >=2 && s.charAt(j)==s.charAt(i) && dp[j+1][i-1])|| (i-j<=1 && s.charAt(j)==s.charAt(i))) |
因为当j-i == 2时,dp[i+1][j-1] 表示的是长度为1的字符串,已经在之前判断过,可以放在第一个判断里面。
注意:问清楚,当字符串为:abcdefg
这种形式时,返回什么。
1 | class Solution { |