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

LeetCode647:回文子串

题目链接:647. 回文子串 - 力扣(LeetCode)

代码如下:

class Solution {
public:
    int countSubstrings(string s) {
        vector<vector<bool>> dp(s.size() + 1, vector<bool>(s.size() + 1, 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)
                    {
                        dp[i][j] = true;
                        result++;
                    }
                    else if(dp[i + 1][j - 1] == true)
                    {
                        dp[i][j] = true;
                        result++;
                    }
                }
            }
        }

        return result;
    }
};

dp的含义:[i, j]这个区间是否是回文子串

dp的递推公式:

if(s[i] == s[j])
{
           if(j - i <= 1)
           {
                   dp[i][j] = true;
                    result++;
            }
           else if(dp[i + 1][j - 1] == true)
           {
                   dp[i][j] = true;
                    result++;
            }

}

这个就是先判断s[i] == s[j]如果相等的话,看看是不是j-i<=1,其实你好好想想,既然s[i] == s[j],分成两个情况,第一个是j-i<=1这个情况了。如果相等的话,那就算一个,如果不是的话,那就看看是不是[i + 1, j - 1]这个区间里面是否回文字符串,如果是的话,那么就让result++,为什么呢?因为你既然都s[i] == s[j]了,而且[i + 1, j - 1]这个区间还是会问,那么[i , j]肯定也是会问的。

初始化:这个需要画一个2*2,来看这个需要怎样初始化,通过画一个2*2表格,来看dp[i - 1][j - 1]能通过哪个方向推导出来,然后分析,只需要都初始化为false即可。

遍历顺序:这个也是先画一个2*2的表格,然后发现,这个只能由下到上,由左到右,那么这个由下到上,这个时候就需要从后往前遍历了,如果从前往后遍历,那么你最后一个值你求不出来。

返回值:返回值的话就是我们在题目中所给的result,返回这个值即可。
 


http://www.kler.cn/a/376111.html

相关文章:

  • CPU 不执行程序的时候在干什么?
  • ctfshow文件包含web78~81
  • SSM学习 day02
  • Vue.js 构建可复用的组件
  • HTB:Analytics[WriteUP]
  • 【golang/navmesh】使用recast navigation进行寻路
  • 大规模语言模型:从理论到实践(1)
  • Python 工具库每日推荐 【Sphinx】
  • 李飞飞团队新突破:低成本高泛化机器人训练法,零样本迁移成功率90%!
  • 【AI开源项目】FastGPT- 深入解析 FastGPT 的知识库逻辑与检索机制:让 AI 更聪明的秘密
  • 20+款数据库DBA常用工具,助你高效管理
  • b站小土堆PyTorch视频学习笔记(二)
  • Spring Boot中发送邮件步骤
  • Web API简洁架构:3个热门开源项目汇总!
  • 如何设计一个支撑数亿用户的系统?
  • NLP segment-02-聊一聊关键词提取 keyword
  • 人工智能技术的应用前景:改变我们的生活和工作方式
  • Servlet 3.0 注解开发
  • Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
  • PyCharm秘籍
  • AI会替代程序员吗?
  • 重构之提取类
  • java项目中如何有效提高List集合的读写速度?
  • Angular实现gridview效果
  • 推荐一款老牌音乐制作宿主软件:MOTU Digital Performer
  • 可编辑97页PPT | 制造企业数字化转型战略咨询及IT总体规划方案