减少字符串

时间:2012-12-15 09:47:42

标签: string algorithm

现在可能是一个众所周知的问题:  考虑任何字符串S,只包含3个字符(a,b,c)。您可以对这些字符串执行此缩减操作:“将第二个替换两个连续的不同字符,例如'ab',可以替换为'c',将'ac'替换为'b'。”我们可以通过这种操作减少多少?

答案总是(1,2,string.length)。

string.length如果所有字符相同, 2 iff count(a)= count(b)= count(c)in S. 否则为1。 但我无法证明这一点。

任何建议都会非常有用。

1 个答案:

答案 0 :(得分:0)

您可以通过归纳 S 来证明此类索赔。

但你必须得到正确的要求,而你却没有。你的主张是

  

答案是| S |如果所有字符都相同,如果count(a)= count(b)= S 中的count(c),则为2,否则为1。

考虑字符串aabb。您的声明可以将其缩短为1,但事实上它只能缩短为2:可能的缩减序列为aabbacbbb和{{1 →aabbacb

获得正确的声明,您应该能够完成证明。