其他分享
首页 > 其他分享> > LeetCode 647. 回文子串

LeetCode 647. 回文子串

作者:互联网

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

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

示例 1:

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

示例 2:

输入: "aaa"
输出: 6
说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".

注意:

  1. 输入的字符串长度不会超过1000。
class Solution {
public:
    int countSubstrings(string s) {
        int res = 0;
        int len = s.size();
        if(len <= 1)
        {
            return len;
        }
        bool dp[len][len];
        memset(dp,0,sizeof(dp));
        for(int i = 0;i < len;++i)
        {
            dp[i][i] = true;
            for(int j = 0;j < i;++j)
            {
                if(s[i] == s[j])
                {
                    if(j + 1 == i)
                        dp[j][i] = true;
                    else
                        dp[j][i] = dp[j+1][i-1];
                    if(dp[j][i])
                        res++;
                }
            }
        }
        return res + len;
    }
};

  

标签:子串,aa,示例,int,647,字符串,LeetCode,回文
来源: https://www.cnblogs.com/Jawen/p/10845681.html