【Leetcode】516. Longest Palindrom
2018-11-27 本文已影响3人
云端漫步_b5aa
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.
第5题是:
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
1 一个是subsequence,一个是substring,substring必须是连续的字符串,subsequence可以不是连续的,可以是随意组合的
2 遇到一个数组,如果是想求其最大,最小,最长,最短值,而并不需要知道具体解的题,可以考虑使用动态规划
3 使用二维数组dp[i][j]表示i和j之间最长回文subsequence的长度
4 如果s[i]==s[j],状态转移方程是dp[i][j]=dp[i+1][j-1]+2;如果s[i]!=s[j],dp[i][j]=max(dp[i+1][j], dp[i][j-1])
5 可以使用O(n) space来解,dp[i]代表
6 可以首先判断整个s是不是palindromic,直接判断s==s[::-1]是否成立
7 外层循环从i=n-1开始遍历(why?)内层循环从i+1遍历到n?