647. 回文子串

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

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

 

示例 1:

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindromic-substrings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

动态规划

dp[j]表示从j位置到当前遍历到的字符位置i是否为回文字符串

class Solution {
public:
    int countSubstrings(string s) {
        int len = s.size();
        vector<int> dp(len);
        int cnt = 0;
        for(int i=0; i<len; ++i)
        {
            dp[i] = 1;
            cnt++;
            for(int j=0; j<i; ++j)
            {
                if(dp[j+1]&&s[i]==s[j])
                {
                    cnt ++;
                    dp[j] = 1;
                }else{
                    dp[j] = 0;
                }
            }
        }
        return cnt;
    }
};

你可能感兴趣的:(LeetCode)