我怎样才能计算最小数量。转换字符串以构成回文的替换?

时间:2016-10-15 19:20:17

标签: string dynamic-programming palindrome

问题表明通过替换字符串中的字符将字符串转换为回文结构。 形成的回文串的长度必须与原始字符串相同。

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

min替换:2

abcde - > ABCBA

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

示例:string要求子串“茶”成为结果字符串

的一部分

然后abcdef - > aettea

最小替换:4

2 个答案:

答案 0 :(得分:0)

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

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

(length - 1) / 2 = #charsReplaced

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

length / 2 = #charsReplaced

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

答案 1 :(得分:0)

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

  • 读取字符串ex:abcde
  •  
  • 上半场(ab)
  •  
  • 检查另一半的反面是否与你的前半部分匹配(ab等于de?)
  •  
  • 计算不相等的字符
  •  
  • answer = 2
  • 例子:radaa
    firsthalf:ra
    检查另一半的反向:aa
    匹配如果相等:ra = aa
    计算不相等字符的数量:1
    替换:a = r
    然后你得到了你的结果:雷达,1个字符的缺陷。