我正在尝试提出一种算法,用于计算由父字符串
字符构成的不同字符串的回文数量现在我正在使用以下内容来测试生成的字符串是否为回文:
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一样好。在我的尝试中,我一直徒劳无功,有没有人尝试过根据这些限制条件生成回文?
答案 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)。