【LeetCode】647. Palindromic Substrings 动态规划

对于这道DP题,自己并没有找到合适的状态划分 ,于是在讨论区寻找题解

对于一个 i 到 j(i<j) 的字符串,它是回文串,当且仅当 i 与 j 处值相等并且 i+1 到 j-1 的子串也满足条件,于是,状态转移方程为

dp[i][j] = s[i] == s[j] && (j - i < 3 || dp[i + 1][j - 1]);

【LeetCode】647. Palindromic Substrings 动态规划

代码如下:

class Solution {
public:
    int countSubstrings(string s) {
        int dp[s.length()][s.length()];
        int res = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
        for (int j = i; j < s.length(); j++) {
            dp[i][j] = s[i] == s[j] && (j - i < 3 || dp[i + 1][j - 1]);
            if(dp[i][j]) ++res;
        }
    }
    return res;
    }
};

 

相关文章:

  • 2021-06-25
  • 2021-11-13
  • 2022-12-23
  • 2022-01-16
  • 2021-11-14
  • 2022-02-18
  • 2021-12-02
猜你喜欢
  • 2021-07-02
  • 2021-12-10
  • 2021-11-16
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案