leetcode647回文子串刷题打卡
创始人
2024-04-16 10:03:05
0

647. 回文子串 - 力扣(Leetcode)

给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

回文字符串 是正着读和倒过来读一样的字符串。

子字符串 是字符串中的由连续字符组成的一个序列。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

示例 1:

输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"

示例 2:

输入:s = "aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"

提示:

  • 1 <= s.length <= 1000
  • s 由小写英文字母组成

题解思路:

动归五步:

  • dp数组以及下标含义

    • 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]true,否则为false
  • 确定递推公式

    • 两种情况
      • s[i] == s[j]
        • 查看ij的距离
          • 如果是<=1则说明是回文(a, aa),dp[i][j] = true
          • 如果>=2则还需要看[i + 1, j - 1]的子序列是不是回文,如果是则dp[i][j] = true
      • s[i] != s[j]
        • 直接按照不是回文处理
  • dp初始化

    • 一开始全部初始化为false,表示还没有开始匹配
  • 遍历顺序 为保证dp[i + 1][j - 1]都是被用到过的 所以遍历要从下到上 从左到右

    由于只会遍历上三角,则j的索引从i开始

    for(int i = s.size() - 1; i >= 0; i--)for(int j = i; j < s.size(); j++)
    

完整代码

class Solution {
public:int countSubstrings(string s) {// dp数组的定义    // 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。vector > dp(s.size(), vector(s.size(), false));// 确定递推公式// s[i] == s[j]// i与j相等或者相差1  直接赋true// i与j相差2及以上  查看dp[i + 1][j - 1]是否为true// s[i] != s[j]// dp[i][j] = false;// 初始化int result = 0;// 遍历顺序 为保证dp[i + 1][j - 1]都是被用到过的  所以遍历要从下到上  从左到右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;}
};

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...