如何计算最小编号。将字符串转换为回文的替换?

Posted

技术标签:

【中文标题】如何计算最小编号。将字符串转换为回文的替换?【英文标题】:How can I compute the minimum no. of replacements to convert a string to make a palindrome? 【发布时间】:2016-10-15 19:20:17 【问题描述】:

问题说明通过替换字符串中的字符将字符串转换为回文。 形成的回文串长度必须与原串长度一致。

例如:字符串 abcde,转换为回文,

最少替换次数:2

abcde -> abcba

如果它需要一个特定的子字符串作为结果回文字符串的一部分呢?

示例:字符串需要子字符串“tea”作为结果字符串的一部分

然后 abcdef -> aettea

最少更换:4

【问题讨论】:

【参考方案1】:

根据定义,回文数在其中心点的每一侧都是相似的。

对于带有奇数字母的字符串,字符串的最大长度减一并除以二将为您提供要替换的字符数。

(length - 1) / 2 = #charsReplaced

对于偶数长度的字符串,替换字符的最大长度是长度除以二。

length / 2 = #charsReplaced

找到要替换的最少字符数需要按每个字符读取字符串,映射字符串中心点两侧的字符,并确定哪些字符相似。对于每边已经有一个相似字母的每个字母(例如,abcbe 比最大值小 1),您将该数量与最大值分开。

【讨论】:

【参考方案2】:

这是一个逻辑问题,但我认为您可以使用我设计的这个算法来计算它:

读取字符串 ex: abcde 获取前半部分 (ab) 检查另一半的反面是否与您的前半部分匹配(ab 等于 de 吗?) 计算不相等的字符数 答案 = 2

示例:拉达 上半场:ra 检查另一半的背面:aa 如果相等则匹配:ra = aa 计算不相等字符的数量:1 替换:a = r 然后你得到了你的结果:雷达,1 个字符缺陷。

【讨论】:

以上是关于如何计算最小编号。将字符串转换为回文的替换?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串转换为具有最少删除字符串字符数的回文?

#计算回文字符串最大长度模板题

1328破坏回文串

最小编辑距离

经典动态规划:编辑距离

Palindrome Partitioning LightOJ - 1044(回文串最小分割数,O(n^2)预处理子串是否回文)