动态规划——1312. 让字符串成为回文串的最少插入次数
动态规划——1312. 让字符串成为回文串的最少插入次数
题目:

思路:
-
dp数组的定义:dp[i] [j] 代表的是字符串s [i, ... , j]成为回文串的最少插入次数 -
base_case:i == j 时,dp[i] [j] = 0 -
状态转移方程:咋想的呢就是相等的话,就不变;不相等的话就得考虑加上前头或者后头的那个最小的操作次数再加1就好了。
if(s[i] == s[j]){dp[i][j] = dp[i+1][j-1];} else{dp[i][j] = min(dp[i][j-1], dp[i+1][j]) + 1;}
代码:
class Solution {
public:
int minInsertions(string s) {
int n = s.size();
int dp[n][n];
memset(dp,0,sizeof(dp));
for(int i = n-2; i>=0;i-- ){
for(int j =i+1; j<n; j++){
if(s[i] == s[j]){
dp[i][j] = dp[i+1][j-1];
}else{
dp[i][j] = min(dp[i][j-1], dp[i+1][j]) + 1;
}
}
}
return dp[0][n-1];
}
};
Rank:


浙公网安备 33010602011771号