Advertisement
nikunjsoni

647

Jun 15th, 2021
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int countSubstrings(string s) {
  4.         int n=s.length();
  5.         int dp[n][n];
  6.         memset(dp, 0, sizeof dp);
  7.        
  8.         int ans=0;
  9.         // Case of 1 character.
  10.         for(int i=0; i<n; i++){
  11.             dp[i][i] = 1;
  12.             ans++;
  13.         }
  14.         // Case of 2 character.
  15.         for(int i=0; i<n-1; i++){
  16.             if(s[i] == s[i+1]){
  17.                 dp[i][i+1] = 1;
  18.                 ans++;
  19.             }
  20.         }
  21.         // Case of 3+ characters.
  22.         for(int len=3; len<=n; len++){
  23.             for(int start=0; start<n-len+1; start++){
  24.                 int end = start+len-1;
  25.                 if(s[start] == s[end] && dp[start+1][end-1]){
  26.                     dp[start][end] = 1; ans++;
  27.                 }
  28.             }
  29.         }
  30.         return ans;
  31.     }
  32. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement