python-leetcode-2124. 检查是否所有 A 都在 B 之前

2124. 检查是否所有 A 都在 B 之前 - 力扣(LeetCode)

可以这样理解题目:我们要判断字符串 s 中是否 所有的 'a' 都出现在所有的 'b' 之前。换句话说,一旦出现了 'b',后面就不能再出现 'a'

示例:

  • "aaabbb" → 返回 true

  • "abab" → 返回 false

  • "bbb" → 返回 true

  • "aaa" → 返回 true

  • "ba" → 返回 false


解法:

我们只需要扫描字符串,一旦遇到了 'b',就设置一个标记。之后如果再遇到 'a',就说明 'a' 出现在 'b' 后面了,返回 false

def check_string(s: str) -> bool:
    seen_b = False
    for ch in s:
        if ch == 'b':
            seen_b = True
        elif ch == 'a' and seen_b:
            return False
    return True

这个方法效率是 O(n),非常高效。

如果你用的是 Python,也可以用一行代码写法:

def check_string(s: str) -> bool:
    return 'ba' not in s

这个利用了 'ba' 是非法的最小单位,一旦有 'ba',就说明顺序错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值