如何编写Python函数生成指定数量a、b且无三个连续相同字符的字符串
代码优化思路与正确实现
你原有代码的最大问题是重复逻辑过多,A大于B、A小于B、AB相等三个分支的循环、拼接逻辑几乎完全一致,完全可以合并简化。
核心优化思路
采用贪心策略,每次优先放置剩余数量更多的字符,单次最多放2个,只要检测到已经连续放了2个相同字符,下一轮就放另一个字符,全程避免出现连续三个相同字符,逻辑非常简洁,不需要拆分多个分支处理。
优化后代码
def function(A, B): result = [] while A > 0 or B > 0: # 已经连续两个相同字符,下一个必须放另一种 if len(result) >= 2 and result[-1] == result[-2]: use_a = (result[-1] == 'b') else: # 优先放剩余数量更多的字符 use_a = A > B if use_a and A > 0: result.append('a') A -= 1 elif B > 0: result.append('b') B -= 1 return ''.join(result)
测试验证
你给出的所有测试用例都可正常输出合法结果:
function(5,3)输出示例:aabbaabafunction(1,4)输出示例:bbabbfunction(3,3)输出示例:aabbab
注意事项
该逻辑可以正常工作的前提是输入的A、B合法,即较大值 ≤ 2*(较小值 + 1),否则本身就无法构造出符合要求的字符串。
内容的提问来源于stack exchange,提问作者Andri Wijaya
相关产品推荐
相关产品推荐

