Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • DSA
  • Interview Problems on DP
  • Practice DP
  • MCQs on DP
  • Tutorial on Dynamic Programming
  • Optimal Substructure
  • Overlapping Subproblem
  • Memoization
  • Tabulation
  • Tabulation vs Memoization
  • 0/1 Knapsack
  • Unbounded Knapsack
  • Subset Sum
  • LCS
  • LIS
  • Coin Change
  • Word Break
  • Egg Dropping Puzzle
  • Matrix Chain Multiplication
  • Palindrome Partitioning
  • DP on Arrays
  • DP with Bitmasking
  • Digit DP
  • DP on Trees
  • DP on Graph
Open In App
Next Article:
Longest Non-palindromic substring
Next article icon

Palindrome Substrings Count

Last Updated : 08 Mar, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
Try it on GfG Practice
redirect icon

Given a string s, the task is to count all palindromic substrings of length more than one.

Examples:

Input: s = “abaab”
Output: 3
Explanation: Palindromic substrings with length greater than 1, are “aba”, “aa”, and “baab”.

Input: s = “aaa”
Output: 3
Explanation: Palindromic substrings with length greater than 1, are “aa” , “aa” , “aaa” .

Input: s = “abbaeae”
Output: 4
Explanation: Palindromic substrings with length greater than 1, are “bb” , “abba” , “aea”, “eae”.

Table of Content

  • [Naive Approach] By Generating All Possible Substrings – O(n^3) Time and O(1) Space
  • Using Memoization – O(n^2) Time and O(n^2) Space
  • Using Bottom-Up DP (Tabulation) – O(n^2) Time and O(n^2) Space
  • Using Center Expansion – O(n^2) Time and O(1) Space

[Naive Approach] By Generating All Possible Substrings – O(n^3) Time and O(1) Space

The idea is to generate all possible substrings using two nested loops and for every substring check if it is palindrome or not.

C++
// C++ program to count all palindromic substring of // given string by generating all possible substrings  #include <iostream> #include <string> using namespace std;  // Function to check if a substring  // s[i..j] is a palindrome bool isPalindrome(string& s, int i, int j) {     while (i < j) {         if (s[i] != s[j]) return false;         i++;         j--;     }     return true; }  int countPS(string& s) {     int n = s.length();           // Consider all possible substrings of lengths     // more than 1     int res = 0;     for (int i = 0; i < n; i++) {         for (int j = i+1; j < n; j++) {                      	// If substring from i to j is palindrome           	// increment the result             if (isPalindrome(s, i, j))                  res++;           }     }      return res; }  int main() {     string s = "abaab";     cout << countPS(s);     return 0; } 
Java
// Java program to count all palindromic substring of // given string by generating all possible substrings  class GfG {          // Function to check if a substring      // s[i..j] is a palindrome     static boolean isPalindrome(String s, int i, int j) {         while (i < j) {             if (s.charAt(i) != s.charAt(j)) return false;             i++;             j--;         }         return true;     }      static int countPS(String s) {         int n = s.length();          // Consider all possible substrings of lengths         // more than 1         int res = 0;         for (int i = 0; i < n; i++) {             for (int j = i + 1; j < n; j++) {                            // If substring from i to j is palindrome                 // increment the result                 if (isPalindrome(s, i, j))                      res++;               }         }          return res;     }      public static void main(String[] args) {         String s = "abaab";         System.out.println(countPS(s));     } } 
Python
# Python program to count all palindromic substring of # given string by generating all possible substrings  # Function to check if a substring  # s[i..j] is a palindrome def isPalindrome(s, i, j):     while i < j:         if s[i] != s[j]:             return False         i += 1         j -= 1     return True  def countPS(s):     n = len(s)      # Consider all possible substrings of lengths     # more than 1     res = 0     for i in range(n):         for j in range(i + 1, n):                        # If substring from i to j is palindrome             # increment the result             if isPalindrome(s, i, j):                 res += 1      return res  if __name__ == "__main__":     s = "abaab"     print(countPS(s)) 
C#
// C# program to count all palindromic substring of // given string by generating all possible substrings  using System;  class GfG {      // Function to check if a substring      // s[i..j] is a palindrome     static bool isPalindrome(string s, int i, int j) {         while (i < j) {             if (s[i] != s[j]) return false;             i++;             j--;         }         return true;     }      static int countPS(string s) {         int n = s.Length;          // Consider all possible substrings of lengths         // more than 1         int res = 0;         for (int i = 0; i < n; i++) {             for (int j = i + 1; j < n; j++) {                            // If substring from i to j is palindrome                 // increment the result                 if (isPalindrome(s, i, j))                      res++;               }         }          return res;     }      static void Main() {         string s = "abaab";         Console.WriteLine(countPS(s));     } } 
JavaScript
// JavaScript program to count all palindromic substring  // of given string by generating all possible substrings  function isPalindrome(s, i, j) {     while (i < j) {         if (s[i] !== s[j]) return false;         i++;         j--;     }     return true; }  function countPS(s) {     let n = s.length;      // Consider all possible substrings of lengths     // more than 1     let res = 0;     for (let i = 0; i < n; i++) {         for (let j = i + 1; j < n; j++) {                        // If substring from i to j is palindrome             // increment the result             if (isPalindrome(s, i, j))                  res++;           }     }      return res; }  // Driver Code let s = "abaab"; console.log(countPS(s)); 

Output
3

[Better Approach 1] Using Memoization – O(n^2) Time and O(n^2) Space

If we notice carefully, we can observe that this recursive solution holds the following two properties of Dynamic Programming:

1. Optimal Substructure: The solution for the problem isPalindrome(i, j) depends on the optimal solution of the subproblem isPalindrome(i + 1, j – 1). By solving the smaller substructures, we can efficiently find if the entire substring is a palindrome or not.

2. Overlapping Subproblems: We can see that we are computing the same subproblems multiple times, isPalindrome(i + 2, j – 2) will be computed in isPalindrome(i, j) as well as isPalindrome(i + 1, j – 1). This redundancy leads to overlapping subproblems.

  • There are two parameters(i and j) that change in the recursive solution and then can go from 0 to n. So we create a 2D array of size n x n for memoization.
  • We initialize this array as -1 to indicate nothing is computed initially. We first check if the value is -1, then only we make recursive calls.
  • If the substring from i to j is a palindrome, we store memo[i][j] = 1, otherwise 0.
C++
// C++ program to count all palindromic substring of // given string using memoization  #include <iostream> #include <vector> #include <string> using namespace std;  int isPalindrome(int i, int j, string& s,                          vector<vector<int>>& memo) {          // One length string is always palindrome                                 if (i == j)       	return 1;            // Two length string is plaindrome if     // both characters are same     if (j == i + 1 && s[i] == s[j])       	return 1;          // if current substring is already checked     if (memo[i][j] != -1)       	return memo[i][j];      // Check if the characters at i and j are equal      // and the substring inside is palindrome     memo[i][j] = (s[i] == s[j] &&                      isPalindrome(i + 1, j - 1, s, memo));        return memo[i][j]; }  int countPS(string& s) {     int n = s.length();        // Memoization table     vector<vector<int>> memo(n, vector<int>(n, -1));      int res = 0;     for (int i = 0; i < n; i++) {         for (int j = i + 1; j < n; j++) {                         // Check if the substring is palindrome             if (isPalindrome(i, j, s, memo)) {                  res++;             }         }     }      return res; }  int main() {     string s = "abaab";     cout << countPS(s);     return 0; } 
Java
// Java program to count all palindromic substring of given // string using memoization  import java.util.Arrays;  class GfG {     static int isPalindrome(int i, int j, String s,                              		int[][] memo) {          // One length string is always palindrome                                      if (i == j)             return 1;                // Two length string is palindrome if         // both characters are same         if (j == i + 1 && s.charAt(i) == s.charAt(j))             return 1;                // if current substring is already checked         if (memo[i][j] != -1)             return memo[i][j];          // Check if the characters at i and j are equal          // and the substring inside is palindrome         if(s.charAt(i) == s.charAt(j) &&             			isPalindrome(i + 1, j - 1, s, memo) == 1)           	memo[i][j] = 1;       	else           	memo[i][j] = 0;          return memo[i][j];     }      static int countPS(String s) {         int n = s.length();          // Memoization table         int[][] memo = new int[n][n];         for (int[] row : memo) {             Arrays.fill(row, -1);         }          int res = 0;         for (int i = 0; i < n; i++) {             for (int j = i + 1; j < n; j++) {                  // Check if the substring is palindrome                 if (isPalindrome(i, j, s, memo) == 1) {                     res++;                 }             }         }          return res;     }      public static void main(String[] args) {         String s = "abaab";         System.out.println(countPS(s));     } } 
Python
# Python program to count all palindromic substrings of # a given string using memoization  def isPalindrome(i, j, s, memo):          # One length string is always palindrome                                  if i == j:         return 1          # Two length string is palindrome if     # both characters are same     if j == i + 1 and s[i] == s[j]:         return 1          # if current substring is already checked     if memo[i][j] != -1:         return memo[i][j]          # Check if the characters at i and j are equal      # and the substring inside is palindrome     if s[i] == s[j] and isPalindrome(i + 1, j - 1, s, memo) == 1:         memo[i][j] = 1     else:         memo[i][j] = 0          return memo[i][j]  def countPS(s):     n = len(s)          # Memoization table     memo = [[-1 for i in range(n)] for i in range(n)]      res = 0     for i in range(n):         for j in range(i + 1, n):                          # Check if the substring is palindrome             if isPalindrome(i, j, s, memo) == 1:                 res += 1      return res   if __name__ == "__main__":     s = "abaab"     print(countPS(s)) 
C#
// C# program to count all palindromic substrings of // a given string using memoization  using System;  class GfG {      static int IsPalindrome(int i, int j, string s,                              			int[,] memo) {          // One length string is always palindrome                                      if (i == j)             return 1;          // Two length string is palindrome if         // both characters are same         if (j == i + 1 && s[i] == s[j])             return 1;          // if current substring is already checked         if (memo[i, j] != -1)             return memo[i, j];          // Check if the characters at i and j are equal          // and the substring inside is palindrome         if (s[i] == s[j] &&              		IsPalindrome(i + 1, j - 1, s, memo) == 1) {             memo[i, j] = 1;         }        	else {             memo[i, j] = 0;         }          return memo[i, j];     }      static int CountPS(string s) {         int n = s.Length;          // Memoization table         int[,] memo = new int[n, n];         for (int i = 0; i < n; i++) {             for (int j = 0; j < n; j++) {                 memo[i, j] = -1;             }         }          int res = 0;         for (int i = 0; i < n; i++) {             for (int j = i + 1; j < n; j++) {                  // Check if the substring is palindrome                 if (IsPalindrome(i, j, s, memo) == 1) {                     res++;                 }             }         }          return res;     }      static void Main() {         string s = "abaab";         Console.WriteLine(CountPS(s));     } } 
JavaScript
// JavaScript program to count all palindromic substrings of // a given string using memoization  function isPalindrome(i, j, s, memo) {          // One length string is always palindrome                                  if (i === j)          return 1;          // Two length string is palindrome if     // both characters are same     if (j === i + 1 && s[i] === s[j])          return 1;          // if current substring is already checked     if (memo[i][j] !== -1)          return memo[i][j];          // Check if the characters at i and j are equal      // and the substring inside is palindrome     if (s[i] === s[j] &&      			isPalindrome(i + 1, j - 1, s, memo) === 1)          memo[i][j] = 1;     else          memo[i][j] = 0;          return memo[i][j]; }  function countPS(s) {     const n = s.length;          // Memoization table     const memo = Array.from({ length: n }, () => Array(n).fill(-1));      let res = 0;     for (let i = 0; i < n; i++) {         for (let j = i + 1; j < n; j++) {                          // Check if the substring is palindrome             if (isPalindrome(i, j, s, memo) === 1) {                  res++;             }         }     }      return res; }  // Driver Code const s = "abaab"; console.log(countPS(s)); 

Output
3

[Better Approach 2] Using Bottom-Up DP (Tabulation) – O(n^2) Time and O(n^2) Space

We create a dp array of size n x n. However, we cannot simply fill the dp table from i = 0 to n-1 and j from i to n-1. To compute the value for (i, j), we need the value from (i+1, j-1). Similar to Matrix Chain Multiplication, we need to fill the table diagonally using a gap variable.

1. Base Cases:

  • A single character string is always palindrome, i.e. dp[i][i] = true.
  • Strings having two characters are palindrome, if both the characters are same. i.e. dp[i][i+1] = true if s[i] == s[i+1].

2. Any substring s[i…j] will be palindrome if:

  • If first and last characters of string are same
  • Remaining substring (excluding first and last character) is palindrome. I.e. dp[i+1][j-1] = true.

Illustration:


C++
// C++ program to count all palindromic substring of // given string using bottom up DP  #include <iostream> #include <vector> #include <string>  using namespace std;  int countPS(string& s) {     int n = s.length();     int res = 0;      vector<vector<bool>> dp(n, vector<bool>(n, false));          // One length string is always palindrome      for (int i = 0; i < n; i++) {         dp[i][i] = true;     }      // Two length string is plaindrome if     // both characters are same     for (int i = 0; i < n - 1; i++) {         if (s[i] == s[i + 1]) {             dp[i][i + 1] = true;             res++;         }     }      // Handle palindromes of length      // greater than 2 (gap >= 2)     for (int gap = 2; gap < n; gap++) {         for (int i = 0; i < n - gap; i++) {             int j = i + gap;              // Check if the current string is a palindrome             if (s[i] == s[j] && dp[i + 1][j - 1]) {                 dp[i][j] = true;                 res++;             }         }     }        return res; }  int main() {     string s = "abaab";     cout << countPS(s) << endl;     return 0; } 
Java
// Java program to count all palindromic substrings of // given string using bottom-up DP  import java.util.*;  class GfG {     static int countPS(String s) {         int n = s.length();         int res = 0;          boolean[][] dp = new boolean[n][n];          // One length string is always palindrome          for (int i = 0; i < n; i++) {             dp[i][i] = true;         }          // Two length string is palindrome if         // both characters are same         for (int i = 0; i < n - 1; i++) {             if (s.charAt(i) == s.charAt(i + 1)) {                 dp[i][i + 1] = true;                 res++;             }         }          // Handle palindromes of length greater than 2         for (int gap = 2; gap < n; gap++) {              for (int i = 0; i < n - gap; i++) {                 int j = i + gap;                  // Check if the current string is a palindrome                 if (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]) {                     dp[i][j] = true;                     res++;                 }             }         }          return res;     }      public static void main(String[] args) {         String s = "abaab";         System.out.println(countPS(s));     } } 
Python
# Python program to count all palindromic substrings of # given string using bottom-up DP  def countPS(s):     n = len(s)     res = 0      dp = [[False] * n for i in range(n)]          # One length string is always palindrome      for i in range(n):         dp[i][i] = True      # Two length string is palindrome if     # both characters are same     for i in range(n - 1):         if s[i] == s[i + 1]:             dp[i][i + 1] = True             res += 1      # Handle palindromes of length      # greater than 2 (gap >= 2)     for gap in range(2, n):         for i in range(n - gap):             j = i + gap              # Check if the current string is a palindrome             if s[i] == s[j] and dp[i + 1][j - 1]:                 dp[i][j] = True                 res += 1      return res   if __name__ == "__main__":     s = "abaab"     print(countPS(s)) 
C#
// C# program to count all palindromic substrings of // given string using bottom-up DP  using System;  class GfG {     static int countPS(string s) {         int n = s.Length;         int res = 0;          bool[,] dp = new bool[n, n];          // One length string is always palindrome          for (int i = 0; i < n; i++) {             dp[i, i] = true;         }          // Two length string is palindrome if         // both characters are same         for (int i = 0; i < n - 1; i++) {             if (s[i] == s[i + 1]) {                 dp[i, i + 1] = true;                 res++;             }         }          // Handle palindromes of length          // greater than 2 (gap >= 2)         for (int gap = 2; gap < n; gap++) {             for (int i = 0; i < n - gap; i++) {                 int j = i + gap;                  // Check if the current string is a palindrome                 if (s[i] == s[j] && dp[i + 1, j - 1]) {                     dp[i, j] = true;                     res++;                 }             }         }          return res;     }      static void Main() {         string s = "abaab";         Console.WriteLine(countPS(s));     } } 
JavaScript
// JavaScript program to count all palindromic substrings of // given string using bottom-up DP  function countPS(s) {     const n = s.length;     let res = 0;      const dp = Array.from({ length: n }, () => Array(n).fill(false));      // One length string is always palindrome      for (let i = 0; i < n; i++) {         dp[i][i] = true;     }      // Two length string is palindrome if     // both characters are same     for (let i = 0; i < n - 1; i++) {         if (s[i] === s[i + 1]) {             dp[i][i + 1] = true;             res++;         }     }      // Handle palindromes of length      // greater than 2 (gap >= 2)     for (let gap = 2; gap < n; gap++) {         for (let i = 0; i < n - gap; i++) {             const j = i + gap;              // Check if the current string is a palindrome             if (s[i] === s[j] && dp[i + 1][j - 1]) {                 dp[i][j] = true;                 res++;             }         }     }      return res; }  // Driver Code const s = "abaab"; console.log(countPS(s)); 

Output
3 

[Expected Approach] Using Center Expansion – O(n^2) Time and O(1) Space

We can further optimize this problem using the center expansion technique. We have used this idea in Longest Palindromic Substring also. In this approach, we consider every character in the string as the center for odd-length palindromes and as one of the two centers for even-length palindromes. We then expand the substring outwards, checking the elements at both ends. For a complete implementation of this approach, refer this article – Count All Palindrome Sub-Strings using Center Expansion.

Related article:

  • Find all distinct palindromic sub-strings of a given string


Next Article
Longest Non-palindromic substring

N

Nishant_Singh(Pintu)
Improve
Article Tags :
  • DSA
  • Dynamic Programming
  • Strings
  • Amazon
  • Morgan Stanley
  • Ola Cabs
  • SAP Labs
Practice Tags :
  • Amazon
  • Morgan Stanley
  • Ola Cabs
  • SAP Labs
  • Dynamic Programming
  • Strings

Similar Reads

  • Longest Palindromic Substring
    Given a string s, the task is to find the longest substring which is a palindrome. If there are multiple answers, then return the first appearing substring. Examples: Input: s = "forgeeksskeegfor" Output: "geeksskeeg"Explanation: There are several possible palindromic substrings like "kssk", "ss", "
    12 min read
  • Palindrome String
    Given a string s, the task is to check if it is palindrome or not. Example: Input: s = "abba"Output: 1Explanation: s is a palindrome Input: s = "abc" Output: 0Explanation: s is not a palindrome Using Two-Pointers - O(n) time and O(1) spaceThe idea is to keep two pointers, one at the beginning (left)
    14 min read
  • Longest Non-palindromic substring
    Given a string of size n. The task is to find the length of the largest substring which is not a palindrome. Examples: Input : abba Output : 3 Here maximum length non-palindromic substring is 'abb' which is of length '3'. There could be other non-palindromic sub-strings also of length three like 'bb
    7 min read
  • Count special palindromes in a String
    Given a String s, count all special palindromic substrings of size greater than 1. A Substring is called special palindromic substring if all the characters in the substring are same or only the middle character is different for odd length. Example "aabaa" and "aaa" are special palindromic substring
    11 min read
  • Length of Longest Palindrome Substring
    Given a string S of length N, the task is to find the length of the longest palindromic substring from a given string. Examples: Input: S = "abcbab"Output: 5Explanation: string "abcba" is the longest substring that is a palindrome which is of length 5. Input: S = "abcdaa"Output: 2Explanation: string
    15+ min read
  • Make String Anti-Palindrome
    Given a string S of length N is said to be an Anti-palindrome string if, for each 0 ? i ? N-1, Si != S(N - 1 ? i). The task is to print Anti-Palindrome String formed, If it is not possible to find print "-1" Examples: Input: S = "abdcccdb"Output: "cbbaccdd"Explanation: cbbaccdd is an Anti-palindrome
    6 min read
  • Palindrome Substring Queries
    Given a string str of length n and a 2d array queries[][], where each query queries[i] is of type [i, j]. For each query, your task is to check if the substring str[i:j] is a palindrome. Examples : Input: str = "abaaabaaaba"queries[][] = [ [0, 10], [5, 8], [2, 5], [5, 9] ]Output: 1 0 0 1Explanation:
    15+ min read
  • Palindrome String Coding Problems
    A string is called a palindrome if the reverse of the string is the same as the original one. Example: “madam”, “racecar”, “12321”. Properties of a Palindrome String:A palindrome string has some properties which are mentioned below: A palindrome string has a symmetric structure which means that the
    2 min read
  • Count of Palindromic substrings in an Index range
    Given a string str of small alphabetic characters other than this we will be given many substrings of this string in form of index tuples. We need to find out the count of the palindromic substrings in given substring range. Examples: Input : String str = "xyaabax" Range1 = (3, 5) Range2 = (2, 3) Ou
    11 min read
  • CSES Solution - Longest Palindrome
    Prerequisite: Manacher’s Algorithm Given a string, your task is to determine the longest palindromic substring of the string. For example, the longest palindrome in aybabtu is bab. Example: Input: s = aybabtuOutput: bab Input: GeeksgfgGeeksOutput: gfg Approach: The idea is to use Manacher’s algorith
    14 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences