一. 题目
-
题目
-
示例
二. 方法一: Hash表
-
解题思路
-
解题代码
def shortestCompletingWord(self, licensePlate: str, words: List[str]) -> str: map1 = {} # 统计出licensePlate中每个字母的个数 for ele in licensePlate.lower(): if ele.isalpha(): map1[ele] = map1.get(ele, 0) + 1 min_str = " " * 16 for word in words: # 统计每个字符的个数 temp = collections.Counter(word.lower()) for ele in map1: # 如果word中存在小于licenseplate中数量的字符, 则跳该改元素 if temp.get(ele, 0) < map1[ele]: break else: # 到这一步, 则说明该单词是一个完整词 # 然后再在满足的元素中, 寻找到第一个最短的完整词即可 if len(word) < len(min_str): min_str = word return min_str
-
分析
三. 方法二: 排序
-
解题思路
-
解题代码
def shortestCompletingWord(self, licensePlate: str, words: List[str]) -> str: arr = [ele.lower() for ele in licensePlate if ele.isalpha()] map1 = collections.Counter(arr) words.sort(key=len) for word in words: for e in map1: if word.count(e) < map1[e]: break else: return word
-
分析