力扣5. 最长回文子串

动态规划

  • 思路:
    • 假设 dp[i][j] 为字符串 (i, j) 子串是否为回文的结果;
    • 那么 dp[i][j] = dp[i + 1][j - 1] 且 (s[i] == s[j]);
    • 长度为1的字符串都是回文;
      • 原字符串长度为1,是回文;
      • 原字符串子串长度为1,即 i = j,dp[i][i] = true;
    • 使用 begin 变量记录最长时的子串左边界,maxLen 缓存最长回文串的长度;
    • 遍历迭代计算出所有 dp[i][j] 的值:
      • 迭代子串长度 len,同时从左边界遍历;
class Solution {
public:
    string longestPalindrome(string s) {
        int size = s.size();
        if (size < 2) {
            return s;
        }

        int maxLen = 1;
        int begin = 0;

        std::vector<std::vector<bool>> dp(size, std::vector<bool>(size));

        // len 1
        for (int i = 0; i < size; ++i) {
            dp[i][i] = true;
        }

        for (int len = 2; len <= size; ++len) {
            for (int left = 0; left < size; ++left) {
                int right = len + left - 1;
                if (right >= size) {
                    break;
                }

                if (s[left] != s[right]) {
                    dp[left][right] = false;
                } else {
                    if (right - left < 3) {
                        dp[left][right] = true;
                    } else {
                        dp[left][right] = dp[left + 1][right - 1];
                    }
                }

                if (dp[left][right] && (right - left + 1 > maxLen)) {
                    maxLen = right - left + 1;
                    begin = left;
                }
            }
        }

        return s.substr(begin, maxLen);
    }
};

相关推荐

  1. 5.

    2023-12-16 07:16:05       38 阅读
  2. 5.

    2023-12-16 07:16:05       33 阅读
  3. 5.

    2023-12-16 07:16:05       10 阅读
  4. 每日OJ题_dp⑤_516. 序列

    2023-12-16 07:16:05       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 07:16:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 07:16:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 07:16:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 07:16:05       20 阅读

热门阅读

  1. 30天精通Nodejs--第十四天:MongoDB

    2023-12-16 07:16:05       42 阅读
  2. 虾皮Shopee API接口获取商品图片列表

    2023-12-16 07:16:05       46 阅读
  3. register_chrdev函数使用

    2023-12-16 07:16:05       39 阅读
  4. 微信小程序 - 龙骨图集拆分

    2023-12-16 07:16:05       37 阅读
  5. uniapp微信小程序下载base64图片流或https图片

    2023-12-16 07:16:05       41 阅读
  6. RHCL8_Linux_ansible的使用

    2023-12-16 07:16:05       39 阅读
  7. vue与angular以及react的区别

    2023-12-16 07:16:05       32 阅读
  8. 浅谈“前端已死”论

    2023-12-16 07:16:05       37 阅读