擅长:python、mysql、java
<p>我觉得这比你做的简单多了。在</p>
<p>一个没有<code>b</code>开头的字符串,可以在彼此的字符之间插入两个<code>b</code>,加在开头和结尾。(就绳子的长度而言,有多少根?)在</p>
<p>一个有一个<code>b</code>的字符串在用<code>b</code>s“填充”时看起来是一样的,就像它没有<code>b</code>一样。所以就好像我们从一个短了1个字符的字符串开始(原来的<code>b</code>没有给我们额外的插入位置),而且我们可以少插入1个<code>b</code>,因为已经存在的那个将取代它。因此,我们插入(练习:多少?)如果字符不是<code>b</code>,那么<code>b</code>要少。在</p>
<p>这扩展到任何数量的孤立的<code>b</code></p>
<p>如果有一个双<code>b</code>,那么它将删除两个要插入的位置:比较插入<code>acbbca</code>和插入{<cd13>}。无论哪种方式我们都得到<code>bbabbcbbcbbabb</code>;原理是一样的——我们从一个短2个字符的字符串开始,再少插入2个<code>b</code>,因为它们已经在那里了。也就是说,原始的<code>b</code>是孤立的还是折叠的并不重要;原始字符串中的每个<code>b</code>都会减少相同数量的答案。在</p>
<p>总之,一个简单的数学公式——根据字符串的长度和已经存在的<code>b</code>的数量——告诉我们答案。(当然,如果已经有一个三元组<code>b</code>,那么我们根本就不能添加到字符串中,所以我们应该单独检查它的合理性)。在</p>