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"
這題有 DP 解法,也有專門算 palindromic substring 長度的演算法,叫 Manacher's Algorithm
DP 的想法是,用 dp[i][j] 表示從 s[i] 到 s[j] 是否是一個回文串
其公式如下:
當 s[i] = s[j] 的時候,如果是相鄰字元 (j - i < 2),則 dp[i][j] = true
當 s[i] = s[j] 的時候,如果不是相鄰字元 (j - i >= 2),則 dp[i][j] = dp[i+1][j-1]
當 s[i] != s[j] 的時候,則 dp[i][j] = false
code 如下
kotlin
沒有留言:
張貼留言