- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Longest Palindromic Substring
In a given string, we have to find a substring, which is a palindrome and it is longest.
To get the longest palindromic substring, we have to solve many subproblems, some of the subproblems are overlapping. They are needed to be solved for multiple times. For that reason, the Dynamic programming is helpful. Using a table, we can store the result of the previous subproblems, and simply use them to generate further results.
Input and Output
Input: A String. Say “thisispalapsiti” Output: The palindrome substring and the length of the palindrome. Longest palindrome substring is: ispalapsi Length is: 9
Algorithm
findLongPalSubstr(str)
Input − The main string.
Output − Longest palindromic substring and its length.
Begin n := length of the given string create a n x n table named palTab to store true or false value fill patTab with false values maxLen := 1 for i := 0 to n-1, do patTab[i, i] = true //as it is palindrome of length 1 done start := 0 for i := 0 to n-2, do if str[i] = str[i-1], then palTab[i, i+1] := true start := i maxLen := 2 done for k := 3 to n, do for i := 0 to n-k, do j := i + k – 1 if palTab[i+1, j-1] and str[i] = str[j], then palTab[i, j] := true if k > maxLen, then start := i maxLen := k done done display substring from start to maxLen from str, and return maxLen End
Example
#include<iostream> using namespace std; int findLongPalSubstr(string str) { int n = str.size(); // get length of input string bool palCheckTab[n][n]; //true when substring from i to j is palindrome for(int i = 0; i<n; i++) for(int j = 0; j<n; j++) palCheckTab[i][j] = false; //initially set all values to false int maxLength = 1; for (int i = 0; i < n; ++i) palCheckTab[i][i] = true; //as all substring of length 1 is palindrome int start = 0; for (int i = 0; i < n-1; ++i) { if (str[i] == str[i+1]) { //for two character substring both characters are equal palCheckTab[i][i+1] = true; start = i; maxLength = 2; } } for (int k = 3; k <= n; ++k) { //for substrings with length 3 to n for (int i = 0; i < n-k+1 ; ++i) { int j = i + k - 1; if (palCheckTab[i+1][j-1] && str[i] == str[j]) { //if (i,j) and (i+1, j-1) are same, then check palindrome palCheckTab[i][j] = true; if (k > maxLength) { start = i; maxLength = k; } } } } cout << "Longest palindrome substring is: " << str.substr(start, maxLength) << endl; return maxLength; // return length } int main() { char str[] = "thisispalapsiti"; cout << "Length is: "<< findLongPalSubstr(str); }
Output
Longest palindrome substring is: ispalapsi Length is: 9
- Related Articles
- Longest Palindromic Substring in Python
- Program to find length of longest palindromic substring in Python
- Longest Palindromic Subsequence
- Program to find length of longest palindromic substring after single rotation in Python
- Longest Palindromic Subsequence in C++
- Java Program for Longest Palindromic Subsequence
- Longest Repeating Substring in C++
- Longest Duplicate Substring in C++
- Program to find length of longest palindromic subsequence in Python
- Longest Substring Without Repeating Characters in Python
- SequenceMatcher in Python for Longest Common Substring.
- Swap For Longest Repeated Character Substring in C++
- Finding longest substring between two same characters JavaScript
- Program to find longest nice substring using Python
- Program to find longest awesome substring in Python

Advertisements