Maximum Product of Word Lengths

来源:互联网 发布:ibm外包怎么样 知乎 编辑:程序博客网 时间:2024/05/16 15:52

leetcode第318题,要求在一串字符串中找出没有重复字母的单词,并且其长度之积最大。

tag是位操作,一开始没明白什么意思,后来参考后发现,单词全部由小写字母组成,因此只有26种可能,因此可以设置一个26位的数字来记录该位上字母是否出现,两个单词如果有相同的字母,那么这两个单词对应的代表的数字当按位与操作之后一定不是零。这样就可以就可以判断是否有重复字母了,然后遍历找出最大长度积就可以了,复杂度为o(n2)

class Solution(object):    def maxProduct(self, words):        """        :type words: List[str]        :rtype: int        """        nums = []        n = len(words)        maxlen = 0        for word in words:            nums.append(sum(1<<(ord(char)-ord('a')) for char in set(word)))        for i in range(n):            for j in range(n):                if not (nums[i] & nums[j]):                    maxlen = max(len(words[i])*len(words[j]),maxlen)        return maxlen        


0 0
原创粉丝点击