动态规划分析:
一、dp数组的含义:dp[i][j] 的含义是从字符串的 s[i … j]成为回文串的最小插入次数。
二、base case :单个字符构成的字符串本来就是回文串,所以最小的插入次数是0。
三、状态转移方程:当s[i] == s[j] 时,左右对应刚好满足回文,这时 dp[i][j] = dp[i+1][j-1] +2 。如果不相等,那么最小的插入次数应该是分别只插入一个字符时的次数加上一(从左插入和从右插入,对应的分别是i 和 j),然后取它们中的最小值作为最小的插入次数。
四、我们要的就是 dp[0][s.size()-1]。
下列是代码: