647. 回文子串
dp[i][j]为下表为i ~ j是否是回文子串
这里不选择定为回文子串个数的原因是不容易迭代递推公式
递推公式分两部分
1.如果i和j一样或者i-1和j一样 那么dp[i][j]为true,因为一共就一个元素或者两个
2.如果i和j差距2个以上,这时如果dp[i+1][j-1]也就是中间部分是true的那么加上两端也已经是true的
在每次为true时,result需要++;
初始化时 需要全部为false 如果全是true那就不用递推了
遍历顺序 可以看出是由左下角进行更新的 所以i要倒叙 j要正序
516. 最长回文子序列
dp数组的含义为i ~ j最长的回文子序列个数
初始化 当 i == j 也就是dp[0][0] dp[1][1]...这样的情况 回文子序列为1
迭代方式 当 i j 值相同时 dp[i][j] 就是 i+1到j-1这个中间范围的个数加上两个断点
如果不相同的而情况下要看时i 到 j-1这一段更大 还是 i+1到j这一段更大
遍历也跟上一题一样 i从大到小 j从小到大
返回dp[0][终点]的个数。