我正在尝试提出一种算法来计算由父字符串的字符形成的不同字符串的回文数
现在我正在使用以下命令来测试生成的字符串是否是回文:
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;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是我创建回文的任何尝试都没有按照我想要的方式工作。基本上,我想采用像racecar这样的词,并提出字符串中任何字符的任意组合可能的所有回文,只要它是回文即可。例如,对于racecar,racecar 当然可以像 aaacaaa 甚至 eecrcee 一样工作。我的尝试是徒劳的,有没有人尝试过根据具有这些约束的字符串生成回文?
小智 5
可能的回文数取决于您可以选择的字符数量以及单词的长度。
在“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)。
| 归档时间: |
|
| 查看次数: |
355 次 |
| 最近记录: |