forked from shreyamalogi/DSA-BOOK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path054_longest palindrome.cpp
65 lines (51 loc) · 1014 Bytes
/
054_longest palindrome.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//author :shreyamalogi
//longest palindrome in a string
#include<bits/stdc++.h>
using namespace std;
string pal(string s, int l, int r)
{
if(s=="" || l>r)
return "";
while(l>=0 && r<s.length() && s[l]==s[r])
{
l--;
r++;
}
return s.substr(l+1,r-1-1);
}
int main()
{
int tt;
cin>>tt;
while(tt--)
{
string s;
cin>>s;
int n=s.length();
//check for odd length and even length palindromes
//and take the longest outta them
//pal func will check for the palindrome around the center
string longest = s.substr(0,1);
for(int i=0;i<n-1;i++)
{
string p1 = pal(s,i,i);
if(p1.length()>longest.length())
longest = p1;
string p2 = pal(s,i,i+1);
if(p2.length()>longest.length())
longest = p2;
}
cout<<longest<<endl;
}
return 0;
}
//2
//aaaabbaa
//aaaabbaa
//abc
//abc
//Input:
//S = "aaaabbaa"
//Output: aabbaa
//Explanation: The longest Palindromic
//substring is "aabbaa".