majer 发表于 2024-5-2 18:29:37

三段字符串组合成回文字符串

显然存在两个字符串X和 Y,使它们的组合 XY 和 YX 是不同的回文:X=ab Y=ba(所以 XY=abba YX=baab)。

现在问:是否存在三个字符串X、Y、Z,使得 XYZ、YZX、ZXY 是不同的回文?


应该是挺难的:L

mathe 发表于 2024-5-2 19:18:36

不行,最多产生两个不同的回文串。
我们假设将文本XYZ首尾相接,构成一个环形,其中XZ连接处显然有个对称轴,同样XY连接处,YZ连接处也都有对称轴。
XYZ,YZX,ZXY互不相等说明这三个对称轴处展开的内容不同。
假设存在,那么这样的环形至少存在三个对称轴,选择其中最接近的两个对称轴,那么两者(指距离短的那部分)之间没有第三个对称轴。
如图容易看出,通过递归定义,就可以将两者之间部分依次通过通过各对称轴复制到整个字符串,得到所有对称轴最多两类。
比如图中区域0是开始选定两条最接近对称轴中间部分,通过0区域上面的对称轴对称得到区域1,通过0区域下面的对称轴对称得到区域2.
而将区域1又可以通过其上面对称轴对称得到区域3和区域0结构完全相同;同样将区域2通过其下面对称轴对称得到区域4也和区域0相等等等。所以最终看出在所有对称轴处切割得到回文串内容最多只有两种。
页: [1]
查看完整版本: 三段字符串组合成回文字符串