Java 正在计算所有可能的回文

Java Calculating all potential palindromes

我正在尝试提出一种算法来计算由 parent string

的字符组成的不同字符串的回文数

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

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;
}

它工作正常,但是我为创建回文所做的任何尝试都没有按照我想要的方式工作。基本上我想用 racecar 这样的词,并想出所有 palindromes 字符串中任何字符的任意组合都可能的,只要这是一个回文。因此,例如,对于赛车,赛车当然可以像 aaacaaa 甚至 eecrcee 一样工作。我的尝试一直是徒劳的,有没有人尝试过根据具有这些约束的字符串生成回文?

可能的回文数取决于您可以选择的字符数以及单词的长度。

在"racecar"的例子中,你有4个不同的字母可供选择,你需要制作一个长度为7的字符串。所以第一个字符有4个选择,第二个有4个,4个对于第 3 个,4 对于第 4 个(中间字符)。第 5 个字符必须与第 3 个相同,第 6 个必须与第 2 个相同,第 7 个必须与第 1 个相同。

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

一般会有N^K(Math.pow(N, K))个可能的回文,其中N是你可以选择的不同字母的个数,K是你需要的字符串长度的一半(如果字符串长度是奇数加1)。