字符串中的回文字符数是多少? 示例:string =“aaabbbb”; 可能的anagram是回文“abbabba”,“bbaaabb”和“bababab”。 这里的问题是时间,我有10 ^ 9的字符串。 这是我的最终代码可以有人告诉我它有什么问题吗?
答案 0 :(得分:8)
输入字符串中的每个字母都必须以偶数显示,execpt一个字母可以以奇数显示。这封信在palindron中有一个固定的位置。它必须完全在中间。可以说字母a,b,c,......的数量是#a,#b,#c,......
你只关心这些信件的一半,因为在一个palindron,下半部分是上半部分。所以我们只使用了一半的字母:
我使用了floor函数,所以我计算出的字母是奇数,正确。
那么上半年有多少排列?这是一个明显排列的情况,所以我们得到
的可能性。
对于你的例子: string =“aaabbbb”;
我们得到:#a = 3,#b = 4。因此
我们得到3个palindroms,这些是“abbabba”,“bbaaabb”和“bababab”,就像你发布的那样。
所以,如果你有一个非常大的字符串:
答案 1 :(得分:0)
由于字谜的每一面都必须是另一面的镜像,我们关心的字谜数量基本上只是我们可以在一边形成的字谜数量,所以: