You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写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) 输出示例:aabbaaba
  • function(1,4) 输出示例:bbabb
  • function(3,3) 输出示例:aabbab

注意事项

该逻辑可以正常工作的前提是输入的A、B合法,即较大值 ≤ 2*(较小值 + 1),否则本身就无法构造出符合要求的字符串。

内容的提问来源于stack exchange,提问作者Andri Wijaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:39:04