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',就说明顺序错了。
4538

被折叠的 条评论
为什么被折叠?



