Leetcode1312: 让字符串成为回文串的最少插入次数

2020-04-28  本文已影响0人  VIELAMI

给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。

请你返回让 s 成为回文串的 最少操作次数 。

「回文串」是正读和反读都相同的字符串。

image.png

【思路】
关键词:动态规划

【需要注意的】
更新的顺序是斜着遍历,代码写法不记得了

int minInsertions(string s) {
    int n = s.size();
    vector<vector<int>> dp(s.size(), vector<int>(s.size())); //dp全部初始化为0
    for (int l = 2; l <= n; ++l) { //斜着遍历
        for (int i = 0; i <= n - l; ++i) {
            int j = i + l - 1;
            if (s[i] == s[j]) {
                dp[i][j] = dp[i + 1][j - 1];
            }
            else {
                dp[i][j] = min(dp[i + 1][j], dp[i][j - 1])+1;
            }
        }
    }

    return dp[0][n-1];

}
上一篇 下一篇

猜你喜欢

热点阅读