Given a string of digits. Find the length of longest substring of even length i.e. 0,2,... which is a palindrome or which can be rearranged to form a palindrome (see example below).
Here is my code:
def is_palindrome(string):
length=len(string)
new_d=[' ']*length
#For rearranging the substring
for i in range(length/2):
new_d[i]=string[i]
if string[i] in string[i+1:]:
sindx=length-1-(string[::-1].index(string[i]))
new_d[-(i+1)]=string[sindx]
string1=('').join(new_d)
return string1==string1[::-1]
def substring(number):
subs=[]
length=len(number)
for i in range(length):
for j in range(i+2,length+1,2):
#print(number[i:j])
yield number[i:j]
def count_palindromes(number):
palindromes=[]
palindromes.extend(filter(is_palindrome,substring(number)))
#print(palindromes)
if len(palindromes):
lengths=[]
for i in palindromes:
lengths.append(len(i))
lengths.sort(reverse=True)
return lengths[0]
else:
return 0
number=raw_input()
length=count_palindromes(number)
print(length)
Input: String of numbers(0-9)
Ouput:Length of longest palindromic substring of even length
Example
Input:12345354987
Longest palindromic even length substring: 345354
On rearranging: 345543
Output:6