您当前的位置: 首页 >  Python

Better Bench

暂无认证

  • 1浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Leetcode刷题Python】318. 最大单词长度乘积

Better Bench 发布时间:2022-07-31 18:24:36 ,浏览量:1

1 题目

给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。

示例 1:

输入:words = [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”] 输出:16 解释:这两个单词为 “abcw”, “xtfn”。

示例 2:

输入:words = [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”] 输出:4 解释:这两个单词为 “ab”, “cd”。

2 解析

用一个数字来代指某个包含字母的字符串:低 26 方法来代指字母 a-z 是否出现过。具体的使用是将每个字母转为比特,然后将整个字符串的所有字母比特进行与运算,得到一个唯一的数字来表示当前字符串。

判断两个字符串的字母是否有相同的字母,进行与运算,如果等于0,说明无相同的字母。此时再判断两个字符串的长度相乘的结果,选出最大的即可。

时间复杂度 O ( n 2 ) O(n^2) O(n2)

3 Python实现
class Solution:
    def maxProduct(self, words: List[str]) -> int:
        masks = []
        for word in words:
            t = 0
            for w in word:
                u = 1             
关注
打赏
1665674626
查看更多评论
0.0425s