动态规划

【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?

上一篇下一篇

猜你喜欢

热点阅读