String 如何查找不包含子字符串回文的所有字符串
免责声明:这是一个从HackerRank上解决的问题,但他们的编辑回答不够,所以我希望得到更好的答案。如果违反任何政策,请让我知道,我会记下来 问题: 给您两个整数,N和M。在不包含任何长度大于1的回文字符串(作为连续子字符串)的大小为M的字母表集合下,计算长度为N的字符串数 N=2,M=2->2::AA,AB,BA,BB N=2,M=3->6::AA,AB,AC,BA,BB,BC,CA,CB,CC ABCDE计数,因为它不包含任何回文子字符串 ABCCC不计算,因为它包含长度大于1的回文“CCC” 社论 以下是我认为错误的答案: 对于N>=3,有(M−2) 选择任何下一个符号的方法(在前两个符号之后)-基本上,它不应该与前一个和前一个符号重合,因为它们不相等String 如何查找不包含子字符串回文的所有字符串,string,algorithm,probability,combinatorics,discrete-mathematics,String,Algorithm,Probability,Combinatorics,Discrete Mathematics,免责声明:这是一个从HackerRank上解决的问题,但他们的编辑回答不够,所以我希望得到更好的答案。如果违反任何政策,请让我知道,我会记下来 问题: 给您两个整数,N和M。在不包含任何长度大于1的回文字符串(作为连续子字符串)的大小为M的字母表集合下,计算长度为N的字符串数 N=2,M=2->2::AA,AB,BA,BB N=2,M=3->6::AA,AB,AC,BA,BB,BC,CA,CB,CC ABCDE计数,因为它不包含任何回文子字符串 ABCCC不计算,因为它包含长度大于1的回文“CC
If N=1, return M
If N=2, return M * (M-1)
If N>=3, return M * (M-1) * (M-2)^(N-2)
反例:N=4,M=3,“ABCC”
我的解决方案试试
当我研究这个问题时,我试图找到所有包含回文子串的字符串,然后从总数中减去它们,M^N。我遇到了很多计数过多的问题。例如,“ABABA”有n=3的“ABA”、“BAB”、“ABA”和n=5的“ABABA”
谢谢你帮我解释这个问题。我真的希望有一个好的答案来解决这个问题 假设您一次构建一个字母的无回文字符串。对于第一个字母,您有M个选项,对于第二个字母,您有M-1,因为您不能使用第一个字母。这是显而易见的
对于前两个字母之后的每个字母,你不能使用前一个字母,也不能使用前一个字母,所以这是两个选择。其他的信呢?好的,如果使用其中一个创建回文,那么它必须是长度至少为4的回文-但是如果添加一个字母为K>=2创建了长度为K+2的回文,那么字符串必须已经具有长度为K的回文,才能构建新的回文。(对于KI,我看不出你的反例应该显示什么。它包含回文
CC
,并且它违反了对无回文字符串的规定约束,因为它有一个与前一个字母相同的字母。一切似乎都是解决方案所说的。