Java计算所有潜在的回文

时间:2016-09-05 02:23:57

标签: java string palindrome

我正在尝试提出一种算法,用于计算由字符串

字符构成的不同字符串的回文数量

现在我正在使用以下内容来测试生成的字符串是否为回文:

public static Boolean isPalindrome(String s) 
{
    int n = s.length();
    for (int i=0;i<(n / 2);++i) 
    {
        if (s.charAt(i) != s.charAt(n - i - 1)) 
        {
            return false;
        }
    }
    return true;
}

哪种方法运作正常,但我为创建回文所做的任何尝试都没有按照我喜欢的方式运作。基本上我想要像赛车这样的词,并提出所有回文,只要它是回文,就可以使用字符串中任何字符的任意组合。因此,例如,赛车当然赛车将和aaacaaa甚至eecrcee一样好。在我的尝试中,我一直徒劳无功,有没有人尝试过根据这些限制条件生成回文?

1 个答案:

答案 0 :(得分:4)

可能的回文数量取决于您可以选择多少个字符,以及该字必须有多长。

在“赛车”示例中,您有4个独特的字母可供选择,您需要制作长度为7的字符串。因此,第1个字符有4个选项,第2个字符为4个,第3个字符为4个, 4为4(中间人物)。第5个字符必须与第3个字符相同,第6个字符必须与第2个字符相同,第7个字符必须与第1个相同。

你只需要为字符串的一半(在这种情况下,前4个字母)做一个字母选择,因为在回文中,另一半是前半部分的镜像。因此,此示例总共有4 * 4 * 4 * 4种可能性。

一般情况下, N^K Math.pow(N, K))可能的回文,其中 N 是不同字母的数量您可以选择, K 是您需要的字符串长度的一半(如果字符串长度为奇数,则加1)。