using
System;
class
GFG{
static
bool
isPalindrome(String r)
{
String p = r;
p = reverse(p);
return
(r.Equals(p));
}
static
String PrefixSuffixPalindrome(String str)
{
int
n = str.Length, len = 0;
for
(
int
i = 0; i < n / 2; i++) {
if
(str[i] != str[n - i - 1]) {
len = i;
break
;
}
}
String prefix =
""
, suffix =
""
;
String midPal =
""
;
prefix = str.Substring(0, len);
suffix = str.Substring(n - len);
str = str.Substring(len, (n - 2 * len) + len);
for
(
int
i = 1; i <= str.Length; i++) {
String y = str.Substring(0, i);
if
(isPalindrome(y)) {
if
(midPal.Length < y.Length) {
midPal = y;
}
}
}
for
(
int
i = 1; i <= str.Length; i++) {
String y = str.Substring(str.Length - i);
if
(isPalindrome(y)) {
if
(midPal.Length < y.Length) {
midPal = y;
}
}
}
String answer = prefix + midPal + suffix;
return
answer;
}
static
String reverse(String input) {
char
[] a = input.ToCharArray();
int
l, r = a.Length - 1;
for
(l = 0; l < r; l++, r--) {
char
temp = a[l];
a[l] = a[r];
a[r] = temp;
}
return
String.Join(
""
,a);
}
public
static
void
Main(String[] args)
{
String str =
"abcdfdcecba"
;
Console.Write(PrefixSuffixPalindrome(str));
}
}