题解:
- 创建一个空列表
q
,用于记录字符"q"的位置。 - 创建变量
u
、a
、c
,分别用于记录字符"u"、“a”、"c"的数量。 - 创建空列表
rans
,用于存储符合要求的大雁叫声的起始和结束位置。 - 遍历给定的字符串,对每个字符进行判断(该步保证了顺序是quack):
- 如果字符是"q",将其位置添加到列表
q
中。 - 如果字符是"u",且字符"u"的数量小于等于
q
列表的长度,则将u
的数量加1。 - 如果字符是"a",且字符"a"的数量小于等于
u
的数量,则将a
的数量加1。 - 如果字符是"c",且字符"c"的数量小于等于
a
的数量,则将c
的数量加1。 - 如果字符是"k",且字符"c"的数量大于等于1,则找到一只完整的大雁。将该大雁的起始和结束位置添加到列表
rans
中,并将u
、a
、c
的数量都减1。 - 如果字符不是"q"、“u”、“a”、“c”、"k"中的一个,则返回-1。
- 如果字符是"q",将其位置添加到列表
- 如果列表
rans
为空,表示没有找到一只完整的大雁,返回-1。 - 初始化变量
ans
为1,用于存储大雁的最大数量。 - 遍历列表
rans
,统计在同一时间内叫声的大雁数量:- 初始化变量
cnt
为1,用于计数。 - 从当前位置开始,遍历列表
rans
的剩余部分。 - 如果当前大雁的结束位置大于等于下一个大雁的起始位置,则说明它们在同一时间内叫声,将
cnt
加1。
- 初始化变量
- 更新
ans
为cnt
和ans
中的较大值。 - 返回
ans
作为最终结果。
代码: