小编inf*_*-85的帖子

替换二进制字符串中的通配符,避免出现三个相同的连续字母

给定长度为N的字符串S,返回一个字符串,该字符串是将'?'字符串S中的每个字符替换为一个'a'或一个'b'字符的结果,并且不包含三个相同的连续字母(换句话说,处理后的字符串中'aaa'不可能'bbb'出现这两个字母)。

例子:

Given S="a?bb", output= "aabb"

Given S="??abb", output= "ababb" or "bbabb" or "baabb"

Given S="a?b?aa", output= "aabbaa"
Run Code Online (Sandbox Code Playgroud)

1<=n<=500000

我使用回溯解决了这个问题,但是我的解决方案很慢并且不适用于更大的 N 值,有更好的方法吗?

c++ algorithm recursion dynamic-programming backtracking

27
推荐指数
3
解决办法
6146
查看次数