【问题标题】:Mathematical proof of maximum possible number of palindromic substrings possible in a string?字符串中可能的最大可能回文子串数量的数学证明?
【发布时间】:2022-01-16 10:18:49
【问题描述】:

我需要证明在一个包含多个字符 n 的字符串中,最多有 n 个不同的、非空的回文子字符串是可能的。我可以理解这是因为每个字符本身都可以是回文,因此可能的最大子字符串数将等于字符串中的字符数。但是,我似乎无法以数学证明的形式表达这一点。我该怎么做?

【问题讨论】:

  • aaa 尺寸 3:aaaaaaaaaa,计数 6。这似乎反驳了你的断言。我不明白。除非你打折单个字符?
  • 我提到了“不同”。在您的情况下,如果我们只计算不同的回文,那么我们将只计算一次 a 和 aa,而不是三个 a 和两个 aa。
  • 所以项目是模糊的。也许会复发;一个表明,与另一个项目,最多可以添加一个?也许 CS 或数学会给你带来更多的结果?
  • 重复字符数似乎是个好主意。如果您有一个包含 n+1 个字符的字符串,请考虑最后一个字符的可能性:它可能等于也可能不等于前 n 个字符中出现的字符。每个案例增加了多少回文数?

标签: algorithm math computer-science


【解决方案1】:

给定 xc,其中 x 是任意字符串,c 是任意字符:

xc 中所有不在 x 中的子字符串必须是 xc后缀。如果它们是回文,那么它们的形式为 cyc,其中 cyxy 的后缀是回文或空。

想象一下有两个这样的新回文后缀。由于它们是同一个字符串的不同后缀,它们的长度必然不同,所以我们有cyczc,其中zycz都是回文或空。

如果 ycz 是回文,则需要考虑几种情况。

  1. 如果 len(y) = len(z),那么这意味着 y = z 并且 czc 因此已经 x 的子串——矛盾。

  2. 如果z更短,那么我们可以再次划分成czrcwczc,但是z是一个回文所以 zr = z 和我们有同样的矛盾。

  3. 如果z更长,那么我们可以划分成cycwcyrc,用wcyr = z,这是一个回文,所以 z = ycwczc 已经出现在 x 中的矛盾。

所以...向字符串添加单个字符可以引入至多一个新的回文子字符串。因此,任何字符串中此类子字符串的总数不能超过字符串的长度。

【讨论】:

  • 1个字符的字符串呢?
  • 1 个字符的字符串是微不足道的——只有在字符串中没有其他出现该字符的情况下,它们才是新的,在这种情况下,唯一的回文后缀是单个字符。
  • 在证明方面,没有任何关于 1 字符的字符串使断言无效,即如果你有两个新的回文后缀,那么你必须有 cyczc 形式。
猜你喜欢
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多