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