📅  最后修改于: 2023-12-03 15:12:41.356000             🧑  作者: Mango
本题为 GATE-CS-2006 的第 38 题。
题目描述:给定一个字符串,编写一个程序来检查它是否是由一组单词组成的,每个单词都是从先前给定的词典中提取的。
输入格式:一个字符串。
输出格式:如果给定的字符串由词典中的单词组成,则输出 True,否则输出 False。
本题需要判断一个字符串是否由一组单词组成,可以将字符串按照空格进行分隔,判断每个分隔出的字符串是否在给定的词典中。需要注意的是,分隔后的字符串需要忽略大小写,并且在判断时需要考虑到相同单词在词典中可能有不同的大小写形式,需要将其归一化为比较。
def is_valid_string(s: str, words: list[str]) -> bool:
s_list = s.split()
word_set = set(words)
for w in s_list:
w = w.lower()
if w not in word_set:
if w.capitalize() not in word_set:
return False
return True
代码解析:
s_list
。words
转换为集合 word_set
,便于后续判断。w
:w
不在词典集合中,并且将其首字母大写后仍不在词典集合中,返回 False。本题主要考查了对字符串的切割和大小写转换的功底,同时注意到相同单词可能有不同大小写形式的情况,需要将其归一化再进行比较。