Given a string, the task is to count all palindromic sub-strings present in it. Length of palindrome sub-string must be greater than or equal to 2.
Example
N = 5
str = "abaab"
Output
3
Explanation:
All palindrome substring are : "aba" , "aa" , "baab"
Solution
class Solution
{
public int CountPS(String S, int N)
{
int count =0;
//we will use 2d matrix for it
// as in the below for loops two things are changing that we have
//keep in track starting index and ending index of the string
int dp[][] = new int[N][N];
for(int row[]: dp) Arrays.fill(row,-1);
for(int i =0;i<N;i++){
for(int j =i+1;j<N;j++){
if(isPalindrome(S,i,j,dp)==1) count++;
}
}
return count;
}
public int isPalindrome(String s, int i ,int j,int dp[][]){
if(i>j) return 1;
if(dp[i][j]!=-1) return dp[i][j];
if(s.charAt(i)!=s.charAt(j)) return 0;
return dp[i][j] = isPalindrome(s,i+1,j-1,dp);
}
}
Top comments (0)