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)。
我正在尝试提出一种算法来计算由 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)。