{"id":2333,"date":"2020-07-29T07:33:46","date_gmt":"2020-07-29T07:33:46","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=2333"},"modified":"2022-03-31T12:20:04","modified_gmt":"2022-03-31T12:20:04","slug":"longest-palindromic-substring-2","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/","title":{"rendered":"Longest Palindromic Substring"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\" alt=\"\" \/><\/p>\n<h3>CONCEPTS USED:<\/h3>\n<blockquote>\n<p>Recursion,Dynamic programming.<\/p>\n<\/blockquote>\n<h3>DIFFICULTY LEVEL:<\/h3>\n<blockquote>\n<p>Hard<\/p>\n<\/blockquote>\n<h3>PROBLEM STATEMENT (SIMPLIFIED):<\/h3>\n<blockquote>\n<p>You are given a string str, find the longest palindromic substring in str.<br \/>\nLongest Palindromic Substring of string str:LPS[i&#8230;j], where 0&lt;=i&lt;=j&lt; len(LPS)<\/p>\n<p><strong>Palindrome string<\/strong>: LPS is palindrome if reverse(LPS) =LPS<br \/>\nIf multiple LPS is the same then return the Longest Palindromic Substring which occurs first ( with the least starting index ).<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/dynamic-programming\/LONGPALSUB1\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h4>For Example :<\/h4>\n<pre><code>Input\n3\naaa\nbbabb\nbaa\n\nOutput\naaa\nbbabb\naa<\/code><\/pre>\n<h3>SOLVING APPROACH:<\/h3>\n<h4>Brute Force:<\/h4>\n<blockquote>\n<p>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.<\/p>\n<p><strong>Time complexity<\/strong>: O(n<sup>3<\/sup>)<br \/>\nThree nested loops are needed to find the longest palindromic substring in this approach, so the time complexity is O(n<sup>3<\/sup>)<br \/>\n<strong>Auxiliary complexity<\/strong>: O(1).<br \/>\nAs no extra space is needed.<\/p>\n<\/blockquote>\n<h3>OPTIMIZATION:<\/h3>\n<blockquote>\n<p>To improve over the brute force solution, we first observe how we can avoid unnecessary re-computation while validating palindromes. Consider the case &quot;ababa&quot;. If we already knew that &quot;bab&quot; is a palindrome, it is obvious that &quot;ababa&quot; must be a palindrome since the two left and right end letters are the same.<\/p>\n<\/blockquote>\n<pre><code class=\"language-We\">\nP(i,j) = {true,}if the substring Si \u2026Sj is a palindrome;\n        {false,}otherwise\n\nTherefore,\nP(i, j) =(P(i+1,j\u22121) and Si==Sj)\n\nThe base cases are:\nP(i, i) = true\nP(i, i+1) = (Si==Si+1 )<\/code><\/pre>\n<p>This yields a straight forward DP solution, which we first initialize the one and two letters palindromes, and work our way up finding all three letters palindromes, and so on&#8230;<\/p>\n<h3>SOLUTIONS:<\/h3>\n<p>\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_2334 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_2334 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_2334 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_2334 .wpsm_nav-tabs > li.active > a, #tab_container_2334 .wpsm_nav-tabs > li.active > a:hover, #tab_container_2334 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_2334 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_2334 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_2334 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_2334 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_2334 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_2334 .wpsm_nav-tabs > li > a:hover , #tab_container_2334 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_2334 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_2334 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_2334 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_2334 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_2334 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_2334 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_2334 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2334 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_2334 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_2334 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_2334 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_2334\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_2334\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2334_1\" aria-controls=\"tabs_desc_2334_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2334_2\" aria-controls=\"tabs_desc_2334_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2334_3\" aria-controls=\"tabs_desc_2334_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_2334_4\" aria-controls=\"tabs_desc_2334_4\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Python<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_2334\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_2334_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include <stdio.h>\r\n\r\nint main()\r\n{\r\n  int test;\r\n  scanf(\"%d\",&test);\r\n\r\n  while(test--){\r\n\r\n    char a[1001];\r\n    scanf(\"%s\",a);\r\n\r\n    int longestSubstring = 1, start=0, end = 0;\r\n\r\n    \/\/Odd palindromic substrings\r\n    for(int i=1; i<strlen(a); i++){\r\n      int j= i-1, k=i;\r\n      while( j>=0 && k<strlen(a) && a[j]==a[k] ){\r\n        if( k-j+1 > longestSubstring){\r\n          start = j;\r\n          end = k;\r\n          longestSubstring = k-j+1;\r\n        }\r\n        j--;\r\n        k++;\r\n      }\r\n    }\r\n\r\n    \/\/Even palindromic substring\r\n    for(int i=0; i<strlen(a); i++){\r\n      int j= i-1, k=i+1;\r\n      while( j>=0 && k<strlen(a) && a[j]==a[k] ){\r\n        if( k-j+1 > longestSubstring){\r\n          start = j;\r\n          end = k;\r\n          longestSubstring = k-j+1;\r\n        }\r\n        j--;\r\n        k++;\r\n      }\r\n    }\r\n\r\n    for(int i=start; i<=end; i++ )\r\n      printf(\"%c\",a[i]);\r\n    printf(\"&#92;n\");\r\n\r\n  }\r\n  return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2334_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include <bits\/stdc++.h>\r\nusing namespace std;\r\n\r\nint main()\r\n{\r\n  int test;\r\n  cin>>test;\r\n\r\n  while(test--){\r\n\r\n    string a;\r\n    cin>>a;\r\n\r\n    int longestSubstring = 1, start=0, end = 0;\r\n\r\n    \/\/Odd palindromic substrings\r\n    for(int i=1; i<a.length(); i++){\r\n      int j= i-1, k=i;\r\n      while( j>=0 && k<a.length() && a[j]==a[k] ){\r\n        if( k-j+1 > longestSubstring){\r\n          start = j;\r\n          end = k;\r\n          longestSubstring = k-j+1;\r\n        }\r\n        j--;\r\n        k++;\r\n      }\r\n    }\r\n\r\n    \/\/Even palindromic substrings\r\n    for(int i=0; i<a.length(); i++){\r\n      int j= i-1, k=i+1;\r\n      while( j>=0 && k<a.length() && a[j]==a[k] ){\r\n        if( k-j+1 > longestSubstring){\r\n          start = j;\r\n          end = k;\r\n          longestSubstring = k-j+1;\r\n        }\r\n        j--;\r\n        k++;\r\n      }\r\n    }\r\n\r\n    for(int i=start; i<=end; i++ )\r\n      cout<<a[i];\r\n    cout<<endl;\r\n\r\n  }\r\n  return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2334_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nimport java.util.*;\r\nimport java.io.*;\r\nimport java.lang.Math;\r\n\r\npublic class Main {\r\npublic static void main(String args[]) throws IOException {\r\n\r\n    Scanner sc= new Scanner(System.in);\r\n    int test = sc.nextInt();\r\n    while(test != 0){\r\n        String a = sc.next();\r\n\r\n        int longestSubstring = 1, start=0, end = 0;\r\n\r\n        \/\/Odd palindromic substrings\r\n        for(int i=1; i<a.length(); i++){\r\n          int j= i-1, k=i;\r\n          while( j>=0 && k<a.length() && a.charAt(j)==a.charAt(k) ){\r\n            if( k-j+1 > longestSubstring){\r\n              start = j;\r\n              end = k;\r\n              longestSubstring = k-j+1;\r\n            }\r\n            j--;\r\n            k++;\r\n          }\r\n        }\r\n\r\n        \/\/Even palindromic substrings\r\n        for(int i=0; i<a.length(); i++){\r\n          int j= i-1, k=i+1;\r\n          while( j>=0 && k<a.length() && a.charAt(j)==a.charAt(k) ){\r\n            if( k-j+1 > longestSubstring){\r\n              start = j;\r\n              end = k;\r\n              longestSubstring = k-j+1;\r\n            }\r\n            j--;\r\n            k++;\r\n          }\r\n        }\r\n\r\n        for(int i=start; i<=end; i++ )\r\n          System.out.print(a.charAt(i));\r\n\r\n        System.out.println();\r\n        test--;\r\n    }\r\n  }\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_2334_4\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"Python\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"Python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nfor _ in range(int(input())):\r\n\r\n\ta = list(input())\r\n\tlongestSubstring, start, end = 1, 0, 0\r\n\r\n\tfor i in range(1, len(a)):\r\n\r\n\t\tj = i - 1\r\n\t\tk = i\r\n\r\n\t\twhile( j &gt;= 0 and k &lt; len(a) and a[j] == a[k] ):\r\n\r\n\t\t\tif( k - j + 1 &gt; longestSubstring):\r\n\r\n\t\t\t\tstart = j\r\n\t\t\t\tend = k\r\n\t\t\t\tlongestSubstring = k - j + 1\r\n\t\t\t\t\r\n\t\t\tj -= 1\r\n\t\t\tk += 1\r\n\r\n\tfor i in range(len(a)):\r\n\t\t\r\n\t\tj = i - 1\r\n\t\tk = i + 1\r\n\t\t\r\n\t\twhile( j &gt;= 0 and k &lt; len(a) and a[j] == a[k] ):\r\n\t\t\t\r\n\t\t\tif( k - j + 1 &gt; longestSubstring):\r\n\t\t\t\r\n\t\t\t\tstart = j\r\n\t\t\t\tend = k\r\n\t\t\t\tlongestSubstring = k-j+1\r\n\t\t\t\r\n\t\t\tj -= 1\r\n\t\t\tk += 1\r\n\t\t\r\n\tprint(*a[start:end + 1], sep = &quot;&quot;)\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_2334 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_2334 a\"),jQuery(\"#tab-content_2334\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t<br \/>\n<strong>Space complexity<\/strong>: O(n<sup>2<\/sup>). It uses  O(n<sup>2<\/sup>) space to store the table.<\/p>\n<p>[forminator_quiz id=&quot;2335&quot;]<\/p>\n<p>This article tried to discuss <strong>Recursion, Dynamic programming<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Recursion,Dynamic programming you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CONCEPTS USED: Recursion,Dynamic programming. DIFFICULTY LEVEL: Hard PROBLEM STATEMENT (SIMPLIFIED): You are given a string str, find the longest palindromic substring in str. Longest Palindromic Substring of string str:LPS[i&#8230;j], where 0&lt;=i&lt;=j&lt; len(LPS) Palindrome string: LPS is palindrome if reverse(LPS) =LPS If multiple LPS is the same then return the Longest Palindromic Substring which occurs first [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[46],"tags":[],"class_list":["post-2333","post","type-post","status-publish","format-standard","hentry","category-recursion-interview-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes<\/title>\n<meta name=\"description\" content=\"Consider &quot;ababa&quot;. If We Already Knew That &quot;bab&quot; Is a Palindrome, it Is Obvious That &quot;ababa&quot; Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"Consider &quot;ababa&quot;. If We Already Knew That &quot;bab&quot; Is a Palindrome, it Is Obvious That &quot;ababa&quot; Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-29T07:33:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-31T12:20:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Longest Palindromic Substring\",\"datePublished\":\"2020-07-29T07:33:46+00:00\",\"dateModified\":\"2022-03-31T12:20:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\"},\"wordCount\":305,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\",\"articleSection\":[\"Recursion Interview Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\",\"name\":\"Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\",\"datePublished\":\"2020-07-29T07:33:46+00:00\",\"dateModified\":\"2022-03-31T12:20:04+00:00\",\"description\":\"Consider \\\"ababa\\\". If We Already Knew That \\\"bab\\\" Is a Palindrome, it Is Obvious That \\\"ababa\\\" Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recursion Interview Programming\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/recursion-interview-programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Longest Palindromic Substring\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes","description":"Consider \"ababa\". If We Already Knew That \"bab\" Is a Palindrome, it Is Obvious That \"ababa\" Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/","og_locale":"en_US","og_type":"article","og_title":"Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes","og_description":"Consider \"ababa\". If We Already Knew That \"bab\" Is a Palindrome, it Is Obvious That \"ababa\" Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.","og_url":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-29T07:33:46+00:00","article_modified_time":"2022-03-31T12:20:04+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Longest Palindromic Substring","datePublished":"2020-07-29T07:33:46+00:00","dateModified":"2022-03-31T12:20:04+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/"},"wordCount":305,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png","articleSection":["Recursion Interview Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/","url":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/","name":"Recursion Interview Programming | Longest Palindromic Substring 2 | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png","datePublished":"2020-07-29T07:33:46+00:00","dateModified":"2022-03-31T12:20:04+00:00","description":"Consider \"ababa\". If We Already Knew That \"bab\" Is a Palindrome, it Is Obvious That \"ababa\" Must Be a Palindrome Since the Two Left and Right End Letters Are the Same.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1648726077068-Longest%20Palindromic%20Substring.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/longest-palindromic-substring-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Recursion Interview Programming","item":"https:\/\/prepbytes.com\/blog\/category\/recursion-interview-programming\/"},{"@type":"ListItem","position":3,"name":"Longest Palindromic Substring"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=2333"}],"version-history":[{"count":11,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2333\/revisions"}],"predecessor-version":[{"id":8427,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/2333\/revisions\/8427"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=2333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=2333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=2333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}