def min_number_of_ducks(sound):quack = ['q', 'u', 'a', 'c', 'k']duck_count = 0# 用于跟踪每个阶段的字符匹配情况stages = [0] * 5 # 对应q, u, a, c, k的匹配位置for char in sound:found = Falsefor i in range(5):if quack[i] == char:if i == 0:# 新的q,可能是一个新的大雁stages[i] += 1duck_count = max(duck_count, sum(stages))else:# 检查前一个字符是否已经匹配if stages[i - 1] > 0:stages[i - 1] -= 1stages[i] += 1if i == 4:# 完成一个完整的quackstages[i] -= 1found = Truebreakif not found:return -1# 检查是否所有阶段都匹配完成if any(stages[i] > 0 for i in range(4)):return -1return duck_count if duck_count > 0 else -1# 读取输入sound = input.strip# 计算并输出结果print(min_number_of_ducks(sound))字符频率检查:首先检查字符串中每个字符的频率是否合理。例如,'q'的数量应至少与'u'、'a'、'c'、'k'的数量相匹配,否则无法形成完整的“quack”序列。贪心匹配:使用一个数组或字典来跟踪每个字符在“quack”中的出现顺序。每当遇到一个字符时,尝试匹配到当前正在形成的最早的“quack”序列中。计数与验证:统计成功匹配的完整“quack”序列数量,并确保所有字符都被正确使用。如果存在未匹配的字符或无法形成完整序列,则返回-1。摘要:def min_number_of_ducks(sound):quack = ['q', 'u', 'a', 'c', 'k']duck_count = 0# 用于跟踪每个阶段的字符匹配情况stages = [0] * 5 # 对应q, u, a, c, k的
来源:美术小黑板