Find the biggest possible palindrome using the characters of a given set of words. If multiple palindromes of the same size could be formed, then it is enough if one of them is printed.
Input: This is a sample text for testing
Output: 15 characters
Input: This is a sample text for testing
Output: 15 characters
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *s;
int len,i,count;
int hash[256];
memset(hash,0,sizeof(hash));
s=(char*)malloc(sizeof(char)*256);
gets(s);
len=strlen(s);
i=0;
while(*(s+i))
{
if(*(s+i)!=' ')
{
*(s+i)=tolower(*(s+i));
hash[*(s+i)-'a']++;
}
i++;
}
i=0;
count=0;
while(*(s+i))
{
if(*(s+i)!=' ')
{
if(hash[*(s+i)-'a']>=2)
{
while(hash[*(s+i)-'a']!=0 && hash[*(s+i)-'a']!=1)
{
count+=2;
hash[*(s+i)-'a']-=2;
}
}
}
i++;
}
if(count < len)
printf("%d",count+1);
else
printf("%d",count-1);
return 0;
}