Posted on 2023-02-09 19:46
Uriel 阅读(45)
评论(0) 编辑 收藏 引用 所属分类:
字符串处理 、
闲来无事重切Leet Code 、
Hash
给出一堆候选公司名(str),每次从中任意选两个,如果交换首字母之后的两个单词在原先的候选名单里都没有出现,那么拼合这两个单词之后的公司名为最终候选公司名,问一共可以组成几个候选公司名
Python的set()用法,参考了Discussion->https://leetcode.com/problems/naming-a-company/solutions/3162477/clean-codes-full-explanation-set-of-array-c-java-python3/
1 #2306
2 #Runtime: 513 ms (Beats 66.67%)
3 #Memory: 33.1 MB (Beats 50%)
4
5 class Solution(object):
6 def distinctNames(self, ideas):
7 """
8 :type ideas: List[str]
9 :rtype: int
10 """
11 suf = [set() for _ in range(26)]
12 for c in ideas:
13 suf[ord(c[0]) - ord('a')].add(c[1:])
14 ans = 0
15 for i in range(25):
16 for j in range(i + 1, 26):
17 cnt = len(suf[i] & suf[j])
18 ans += 2 * (len(suf[i]) - cnt) * (len(suf[j]) - cnt)
19 return ans