当前位置: 首页 > news >正文

代码随想录算法【Day46】

Day46

647. 回文子串

class Solution {
public:
    int countSubstrings(string s) {
        vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));
        int result = 0;
        for (int i = s.size() - 1; i >= 0; i--) {  // 注意遍历顺序
            for (int j = i; j < s.size(); j++) {
                if (s[i] == s[j]) {
                    if (j - i <= 1) { // 情况一 和 情况二
                        result++;
                        dp[i][j] = true;
                    } else if (dp[i + 1][j - 1]) { // 情况三
                        result++;
                        dp[i][j] = true;
                    }
                }
            }
        }
        return result;
    }
};


五部曲

1.dp数组及下标定义:布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。

2.递推公式:

if (s[i] == s[j]) {
    if (j - i <= 1) { // 情况一 和 情况二
        result++;
        dp[i][j] = true;
    } else if (dp[i + 1][j - 1]) { // 情况三
        result++;
        dp[i][j] = true;
    }
}

3.初始化:dp[i][j]初始化为false

4.遍历顺序:从上到下,从左到右

5.数组的数据应该是怎样的:

http://www.dtcms.com/a/18938.html

相关文章:

  • PHP处理大文件上传
  • 搜广推校招面经十六
  • es和kibana安装
  • WEB安全--SQL注入--堆叠注入
  • 53倍性能提升!TiDB 全局索引如何优化分区表查询?
  • 关系数据库标准语言SQL
  • SQL语句语法
  • 【Java】xxl-job
  • print(f“Random number below 100: {random_number}“)的其他写法
  • 【Linux】:网络协议
  • c++--变量内存分配
  • C语言进阶习题【3】5 枚举——找单身狗2
  • Pytest快速入门
  • 【MySQL】第五弹---数据类型全解析:从基础到高级应用
  • Linux 上安装 PostgreSQL
  • AI时代:架构师的困境与救赎
  • 计时器任务实现(保存视频和图像)
  • 牛客小白月赛110
  • GGUF格式的DeepSeek-R1-Distill-Qwen-1.5B模型的字段解析
  • 机器学习·最近邻方法(k-NN)
  • 第七天:数据提取-正则表达式
  • 已知自动驾驶的一个场景,如变道,如何做好预期功能安全
  • 空天技术赋能:毫米波基站+高速数字微波构筑应急通信新范式
  • 函数调用过程的详细解析
  • halcon激光三角测量(十七)calibrate_sheet_of_light_3d_calib_object
  • 容器、pod和缓存
  • 快速入门 Tailwind CSS:现代前端开发的利器
  • 【deepseek api 第三方平台使用参考】
  • 日常故障排查 - Java程序故障排查
  • Day19 第六章 二叉树part07