class Solution {
/*
遍历所有的子串,若为回文,res++。
由下到上,由左到右遍历数组,这样dp[i+1][j-1]一直都能取到值。
dp[i][j] 代表str[i] - str[j]是否是回文子串
状态转移方程:dp[i][j] = s.charAt(i)==s.charAt(j)&&(j-i<2||dp[i+1][j-1])
*/
public int countSubstrings(String s) {
int n=s.length();
boolean [][]dp=new boolean[n][n];
int res=0;
for(int i=n-1;i>-1;i--){
for(int j=i;j<n;j++){
if(s.charAt(i)==s.charAt(j)&&(j-i<2||dp[i+1][j-1])){
dp[i][j]=true;
res++;
}
}
}
return res;
}
}
动态规划中等 leetcode 647. 回文子串
最新推荐文章于 2024-09-24 08:39:28 发布