这道题跟 构建回文串检测 的思路很像,因为都是统计字符个数,然后看构造回文串的条件。因为是构造最长的回文串,所以思路略微有点不同,碰到字符频次为奇数的需要加上其频次 - 1 的长度,然后有奇数频次的字符,则可以在中间再加上一个字符。func longestPalindrome(s string) int { cnt := map[byte]int{} for i := ran...
这道题跟 构建回文串检测 的思路很像,因为都是统计字符个数,然后看构造回文串的条件。因为是构造最长的回文串,所以思路略微有点不同,碰到字符频次为奇数的需要加上其频次 - 1 的长度,然后有奇数频次的字符,则可以在中间再加上一个字符。func longestPalindrome(s string) int { cnt := map[byte]int{} for i := ran...
看到这道题的第一印像是用dp,$dp[i][j]$ 代表 $s[i..j]$ 的回文子串最大长度,后来发现这个定义好像做不出来。遂看答案,结果发现定义应该...