Given a string, find the longest substring which is palindrome.
Input: Given string :"forgeeksskeegfor", Output: "geeksskeeg" Input: Given string :"Geeks", Output: "ee"
Method 1: Brute Force.
Approach: The simple approach is to check each substring whether the substring is a palindrome or not. To do this first, run three nested loops, the outer two loops pick all substrings one by one by fixing the corner characters, the inner loop checks whether the picked substring is palindrome or not.
- Time complexity: O(n^3).
Three nested loops are needed to find the longest palindromic substring in this approach, so the time complexity is O(n^3).
- Auxiliary complexity: O(1).
As no extra space is needed.
Method 2: Dynamic Programming.
Approach: The time complexity can be reduced by storing results of sub-problems. The idea is similar to this post.
- Maintain a boolean table[n][n] that is filled in bottom up manner.
- The value of table[i][j] is true, if the substring is palindrome, otherwise false.
- To calculate table[i][j], check the value of table[i+1][j-1], if the value is true and str[i] is same as str[j], then we make table[i][j] true.
- Otherwise, the value of table[i][j] is made false.
Below is the implementation of the above approach:
Longest palindrome substring is: geeksskeeg Length is: 10
- Time complexity: O(n^2).
Two nested traversals are needed.
- Auxiliary Space: O(n^2).
Matrix of size n*n is needed to store the dp array.
A better space complexity approach can be found in Set-2.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Longest Palindromic Substring | Set 2
- Longest Non-palindromic substring
- Longest palindromic string possible after removal of a substring
- Manacher's Algorithm - Linear Time Longest Palindromic Substring - Part 4
- Manacher's Algorithm - Linear Time Longest Palindromic Substring - Part 3
- Manacher's Algorithm - Linear Time Longest Palindromic Substring - Part 2
- Manacher's Algorithm - Linear Time Longest Palindromic Substring - Part 1
- Minimum length of substring whose rotation generates a palindromic substring
- Shortest Palindromic Substring
- Check if a substring can be Palindromic by replacing K characters for Q queries
- Maximum length palindromic substring such that it starts and ends with given char
- Longest Palindromic Subsequence | DP-12
- Print Longest Palindromic Subsequence
- Longest Palindromic Subsequence of two distinct characters
- Print the longest palindromic prefix of a given string
- Length of longest palindromic sub-string : Recursion
- Longest palindromic String formed using concatenation of given strings in any order
- Longest substring with count of 1s more than 0s
- Longest substring of vowels
- Longest Common Substring | DP-29