【发布时间】:2011-11-20 18:52:50
【问题描述】:
给定一个包含字符 [A-Z] 的长度为 N 的字符串,我如何确定单个字符的最长回文?
我会用一个例子来说明这一点:
给定字符串:JOHNOLSON
在分析字符串时,我们发现我们有一个带有字符 O 的回文,使得字符串看起来像 JOHN OLSON。 O 的回文长度为 7,基本上看起来像 O--O--O强>。另外,请注意有一个带有 N 的回文,但它的长度仅为 6。
另一个例子,
给定字符串:ABCJOHNOLSON 给出与上面相同的结果,长度为 7 的 O 的回文看起来像 O--O --O。
然而,对于给定的字符串ABCJOHNOLSONDA,最长的单个字符回文长度为14,字符A看起来像A------------A。
其他简单的例子包括:
ABA --> A-A(长度为3)
ABAXYZ --> A-A(长度为3)
ABAXYZA --> A---A(长度为 5),而不是长度为 7,因为 A-A---A 不是 A 的回文。
请特别注意最后一个示例,因为它说明了问题的细微差别之一。
【问题讨论】:
-
对于您要查找的内容,必须有一个比“回文”更好的术语,因为您的大多数示例都不是回文。
-
考虑一个示例字符串
ABCDAEEALMNA,当考虑A时看起来像A---A--A---A,这是一个大小为12的回文(当你忽略其余字符的唯一性时) ,但考虑字符串ABCDAEEALMNOA,其中整个字符串不再是回文,而是一个小得多的子字符串成为最长的回文,即末尾长度为5的A---A。 -
我了解您感兴趣的
pattern,它只是不符合术语回文的字典定义。我想知道您正在寻找的是否有正则表达式解决方案。 -
@BlastFurnace 我明白你在说什么。你会建议用不同的方式来思考这个问题吗?它以回文的形式出现在我面前,所以我不确定它还能被描述为什么。
标签: algorithm palindrome