Peragrams
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 1 Accepted Submission(s) : 1
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Per recently learned about palindromes. Now he wants to tell us about it and also has more awesome scientific news to share with us.
“A palindrome is a word that is the same no matter whether you read it backward or forward”, Per recently said in an interview. He continued: “For example, ‘add’ is not a palindrome, because reading it backwards gives ‘dda’ and it’s actually not the same thing, you see.
However, if we reorder the letters of the word, we can actually get a palindrome. Hence, we say that ‘add’ is a Peragram, because it is an anagram of a palindrome”.
Per gives us a more formal definition of Peragrams: “Like I said, if a word is an anagram of at least one palindrome, we call it a Peragram. And recall that an anagram of a word w contains exactly the same letters as w, possibly in a different order.”
Given a string, find the minimum number of letters you have to remove from it, so that the string becomes a Peragram.
“A palindrome is a word that is the same no matter whether you read it backward or forward”, Per recently said in an interview. He continued: “For example, ‘add’ is not a palindrome, because reading it backwards gives ‘dda’ and it’s actually not the same thing, you see.
However, if we reorder the letters of the word, we can actually get a palindrome. Hence, we say that ‘add’ is a Peragram, because it is an anagram of a palindrome”.
Per gives us a more formal definition of Peragrams: “Like I said, if a word is an anagram of at least one palindrome, we call it a Peragram. And recall that an anagram of a word w contains exactly the same letters as w, possibly in a different order.”
Given a string, find the minimum number of letters you have to remove from it, so that the string becomes a Peragram.
Input
Multiple cases. Each case consists of a string on a single line. The string will contain at least 1 and at most 1000 characters. The string will only contain lowercase letters ‘a’-‘z’.
Output
For each case, the output should consist of a single integer on a single line, the minimum number of characters that have to be removed from the string to make it a Peragram.
Sample Input
abc aab
Sample Output
2 0
回文串的性质啦.
#include <stdio.h> #include <string.h> #define MAX 1005 char str[MAX]; int c[26]; int o, e; int main() { int i; while (scanf("%s", str) != EOF) { memset(c, 0, sizeof(c)); for (i = 0; str[i] != '\0'; i++) { c[str[i] - 'a']++; } o = e = 0; for (i = 0; i < 26; i++) { if (c[i] % 2) { e++; } } if (e == 0) { printf("0\n"); } else { printf("%d\n", e - 1); } } return 0; }