美文网首页
984. 不含AAA或BBB的字符串(Python)

984. 不含AAA或BBB的字符串(Python)

作者: 玖月晴 | 来源:发表于2021-05-07 17:09 被阅读0次

    难度:★★★☆☆
    类型:字符串
    方法:逻辑

    题目

    力扣链接请移步本题传送门
    更多力扣中等题的解决方案请移步力扣中等题目录

    给定两个整数 A 和 B,返回任意字符串 S,要求满足:

    S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母;
    子串 'aaa' 没有出现在 S 中;
    子串 'bbb' 没有出现在 S 中。

    示例 1:

    输入:A = 1, B = 2
    输出:"abb"
    解释:"abb", "bab" 和 "bba" 都是正确答案。

    示例 2:

    输入:A = 4, B = 1
    输出:"aabaa"

    提示:

    0 <= A <= 100
    0 <= B <= 100
    对于给定的 A 和 B,保证存在满足要求的 S。

    解答

    题目很好理解,构建一个“a”的数量为A,“b”的数量为B的字符串,并且不要出现“AAA”或“BBB”。

    这个题官网题解还是比较好的,每写一个字符,都要做下面的判断:

    如果连续出现两个相同字符了,则下一个字符一定要相反;

    否则,写数量更多的字符。

    class Solution:
        def strWithout3a3b(self, A, B):
            ans = []
    
            while A or B:
                if len(ans) >= 2 and ans[-1] == ans[-2]:
                    write_a = ans[-1] == 'b'
                else:
                    write_a = A >= B
    
                if write_a:
                    A -= 1
                    ans.append('a')
                else:
                    B -= 1
                    ans.append('b')
    
            return "".join(ans)
    

    如有疑问或建议,欢迎评论区留言~

    有关更多力扣中等题的python解决方案,请移步力扣中等题解析

    相关文章

      网友评论

          本文标题:984. 不含AAA或BBB的字符串(Python)

          本文链接:https://www.haomeiwen.com/subject/eyewcltx.html