【模拟】2023B-查字典
【模拟】2023B-查字典
题目描述与示例
本题练习地址:https://www.algomooc.com/problem/P1001
题目描述
输入一个单词前缀和一个字典,输出包含该前缀的单词。
输入
单词前缀+字典长度+字典。字典是一个有序单词数组。输入输出都是小写
输出
所有包含该前缀的单词,多个单词换行输出
若没有则返回-1
示例一
输入
b 3 a b c
输出
b
示例二
输入
abc 4 a ab abc abcd
输出
abc
abcd
示例三
输入
a 3 b c d
输出
-1
解题思路
本题非常简单,遍历输入的字典中的每一个单词word
,利用切片操作将word
的前缀与给定的前缀prefix
比较即可。要注意一下输入的处理。
代码
# 题目:2023B-查字典
# 分值:100
# 作者:许老师-闭着眼睛学数理化
# 算法:模拟
# 代码看不懂的地方,请直接在群上提问
# 将输入的字符串转化为列表
input_lst = input().split()
# 要查找的前缀
prefix = input_lst[0]
# 单词列表长度
n = int(input_lst[1])
# 要查找的单词列表
words = input_lst[2:]
# 前缀prefix的长度,用于切片
k = len(prefix)
# 初始化答案列表
ans = list()
# 遍历单词列表中的每一个单词word
for word in words:
# 如果word的前k个字符等于前缀
if word[:k] == prefix:
# word是一个符合要求的单词,将其加入答案数组ans中
ans.append(word)
# 如果ans数组最后长度为0,说明不存在前缀为prefix的单词
# 直接输出-1
if len(ans) == 0:
print(-1)
# 如果ans数组最后长度不为0,依次输出ans中的单词即可
else:
for word in ans:
print(word)
时空复杂度
时间复杂度:O(N)
。需要遍历N
个单词。
空间复杂度:O(N)
。