https://leetcode.com/problems/naming-a-company/
是真的思维不够灵活么,为什么想不到。
个人解答
class Solution:
def distinctNames(self, a: List[str]) -> int:
prefix = collections.defaultdict(set)
for x in a:
prefix[x[0]].add(x[1:])
res = 0
for x in prefix:
for y in prefix:
if x != y:
l = len(prefix[x] & prefix[y])
res += (len(prefix[x]) - l) * (len(prefix[y]) - l)
return res
题目分析
这道题想到了prefix,suffix之类的解决思路,但是没抓住本质。
枚举的过程中如何能做到不重不漏是非常重要的。这道题中,参考:https://leetcode.com/problems/naming-a-company/discuss/2141038/Python-3-Explanation-with-pictures
很巧妙的把问题转化为set的求交,联和起来处理,完美做到了枚举。
自己之前总是分开计算suffix和prefix,结果无法做到不重不漏,这一道题值得自己好好思考下。