给定单词的可能回文字符数

时间:2014-09-18 11:23:48

标签: algorithm math combinatorics palindrome anagram

我必须找到对于给定单词可能的回文数字。 假设单词是aaabbbb。我的方法是

  
      
  1. 准备一个不包含的哈希映射。每个字母出现的时间

         

    对于我的例子,它将是

    a--->3
    b--->4
    
         
        
    1. 如果字符串的长度是偶数则没有。每个字母的出现应该是甚至形成给定单词的回文否   palindrome anagrams是0

    2.   
    3. 如果字符串的长度是奇数,则最多一次出现的字母可以是奇数,其他字母应该是偶数。

    4.   
  2.   

以上两个步骤是为了找出某个单词可以形成回文的天气。

现在找不到回文符号,我应该采用什么方法?

1 个答案:

答案 0 :(得分:5)

首先要注意的是,如果单词是一个奇数长度,那么必须有一个奇数出现的字符。如果单词是偶数长度,则必须没有出现奇数的字符。在任何一种情况下,您都在寻找可以安排多对字符的方法。由于订单很重要,您正在寻找排列的数量:

n =字符对的数量(aaaabbb将有3对,aabbcccc将有4对)

(n)!/(number_of_a_pairs!* number_of_b_pairs!* etc ..)

所以在aaaabbb案例中,你找到了aab的排列:

3!/ 2!1! = 3

baa = baabaab

aba = abababa

aab = aabbbaa

在aabbcccc的案例中,你找到了abcc的排列:

4!/ 2! = 12: ABCC ACBC ACCB BACC bcac BCCA CABC 氯化钙 CBAC 加拿大商业公司法 CCAB CCBA