这是一面镜子:|
。我刚刚发现,如果字符串可以自身镜像,则可以在字符串中间粘贴一个镜像!例如,字符串abccba
。如果将其切成两半,则它们是彼此的镜像:
abc <--> cba
因此,我们可以在字符串中间插入一个镜像,新字符串为abc|cba
。有时,仅字符串的一部分可以自身镜像。例如,字符串“ mirror”。两个r被镜像,但是字符串的其余部分不是。没关系,我们将删除字符串中彼此不镜像的部分,然后得到以下字符串:
r|r
某些字符串可以在多个位置进行镜像。例如,“ Hello World,xyzzyx”。我喜欢镜子上反射很多文字,因此您需要找到放置镜子的最佳位置。在这种情况下,您应该输出更长的镜像字符串,就像我们上一个示例一样,删除其他所有内容。该字符串变为:
xyz|zyx
有些字符串看起来像它们可以被镜像,但实际上不能。如果字符串无法在任何地方进行镜像,则不应输出任何内容。
挑战:
给定仅包含printable-ascii的字符串,找到放置镜子的最佳位置。换一种说法,
找到最大的等长回文子字符串,然后用竖线字符“ |”输出 在它的中间。
输入长度为1至50个字符。
您可以假定输入将不包含镜像|
或换行符。除此之外,所有可打印的ASCII字符都是公平的游戏。如果最长的镜像子字符串绑在两个子字符串之间,则可以选择输出哪个。例如,对于字符串“ abba ollo”,必须输出“ ab | ba”或“ ol | lo”,但是输出哪一个都没有关系。字符串是大小写敏感的,例如,“利群”应该没有输出“AB | BA”,它应该输出空字符串。
样本IO:
"Hello World" --> "l|l"
"Programming Puzzles and Code-Golf" --> Either "m|m" or "z|z"
"abcba" --> ""
"Hulluh" --> "ul|lu"
"abcdefggfedcba" --> "abcdefg|gfedcba"
"abcdefggfabc" --> "fg|gf"
"AbbA" --> "Ab|bA"
"This input is a lot like the last one, but with more characters that don't change the output. AbbA" --> "Ab|bA"
像往常一样,这是代码高尔夫球,因此存在标准漏洞,而最短答案以字节为单位!