Java计算所有潜在的回文数

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

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

最佳答案

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

在“racecar”示例中,您有 4 个唯一的字母可供选择,并且您需要创建一个长度为 7 的字符串。因此第一个字符有 4 个选择,第二个字符有 4 个选择,第三个字符有 4 个选择, 4 代表第四个(中间字符)。第 5 个字符必须与第 3 个字符相同,第 6 个字符必须与第 2 个字符相同,第 7 个字符必须与第 1 个字符相同。

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

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

关于Java计算所有潜在的回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39323157/

相关文章:

java - 如何从一个非常大的 JSON 数组中获取数据?

java - Maven读取属性文件中的环境变量

java - 为什么我的 JFrame 窗口会这样做?(检查描述)

java - 在子类中使用父类构造函数的困难

arrays - 如何在 Fortran 中获取未知长度的命令行参数?

java - JVM 在共享字符串数据方面可以更聪明吗?

Javascript 将字符串转换为数字

java-8 - 使用 lambda 表达式的 int 回文

java - 无法在Java中运行回文程序

python - Python 中的回文链长度不正确