Leetcode 647. Palindromic Substrings
题目链接: 647. Palindromic Substrings
难度:Medium
题目大意:
求字符串的回文子串的个数。
思路:
动态规划。如果一个字符串左右两端的字符相等,并且除去这两个字符后的字符串是回文串,则这个字符串是回文串。
代码
class Solution {
public int countSubstrings(String s) {
int n=s.length();
int[][] dp=new int[n][n];
//dp[l][r]表示s[l,r]是不是回文串,l<=r
//如果是回文串,则dp[l][r]=1;
int count=0;
for(int l=n-1;l>=0;l--){
for(int r=l;r<n;r++){
if(s.charAt(l)==s.charAt(r)){
if(r-l<=1){
dp[l][r]=1;
}
else{
dp[l][r]=dp[l+1][r-1];
}
if(dp[l][r]==1){
count++;
}
}
else{
dp[l][r]=0;
}
}
}
return count;
}
}