Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
给出一堆候选公司名(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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理