链接:https://ac.nowcoder.com/acm/contest/19850/E 来源:牛客网 牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾) 牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来: 一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串 根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串 现在给你一个字符串s,判断s是否是好串,用python队列知识解答
时间: 2023-02-08 11:05:04 浏览: 689
在这道题目中,你需要使用 Python 的队列知识来判断一个给定的字符串 s 是否是好串。
首先,可以使用一个队列来存储当前的字符串。然后,你可以通过以下方法来判断 s 是否是好串:
1. 首先,将空串加入队列。
2. 然后,每次取出队列的首个字符串,并将它拆分成两个字符 a 和 b。
3. 如果 s 以 a 开头,则将 a 和 b 插入队列的末尾。
4. 否则,如果 s 以 b 开头,则将 b 和 a 插入队列的末尾。
5. 重复步骤 2-4,直到队列为空。
如果在每次操作后,s 仍然以 a 或 b 开头,则 s 不是好串。
下面是一个使用 Python 实现的示例代码:
```
from collections import deque
def is_good_string(s):
queue = deque()
queue.append('')
while queue:
cur = queue.popleft()
if not cur:
continue
a, b = cur[0], cur[1]
if s.startswith(a):
queue.append(a + b)
elif s.startswith(b):
queue.append(b + a)
else:
return False
return True
s = 'aababb'
print(is_good_string(s)) # True
s = 'abbb'
print(is_good_string(s)) # False
s = 'aabb'
print(is_good_string(s)) # False
```
阅读全文