318. 最大单词长度乘积

给你一个字符串数组 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"。

示例 3:

输入:words = ["a","aa","aaa","aaaa"]
输出:0 
解释:不存在这样的两个单词。

提示:

  • 2 <= words.length <= 1000
  • 1 <= words[i].length <= 1000
  • words[i] 仅包含小写字母
class Solution {
    public int maxProduct(String[] words) {
        int hash[] = new int[words.length];
        // Hash里面存着一个32位的二进制码,用来标记单词。
        for(int i = 0; i < words.length;i++){
            String word = words[i];
            for(char c: word.toCharArray()){
                hash[i] |= 1 << (c - 'a');
            }
        }
        int res = 0;
        for(int i = 0; i < words.length - 1;i++){
            for(int j = i + 1; j < words.length;j++){
                if((hash[i] & hash[j]) == 0){
                    res = Math.max(res, words[i].length() * words[j].length());
                }
            }
        }
        return res;

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
余弦相似度作为相似度度量有以下优点和缺点: 优点: 1. 简单易懂:余弦相似度是一种直观易懂的相似度度量方法,不需要深入的数学理论知识。 2. 对文本长度不敏感:余弦相似度不受文本长度的影响,因此适用于任意长度的文本。 3. 不受文本方向的影响:余弦相似度不考虑文本的方向,因此在文本比较时是无方向的。 4. 可以处理稀疏向量:余弦相似度可以有效地处理稀疏向量,这在自然语言处理中非常有用。 5. 适用于高维数据:余弦相似度在高维数据中表现良好,因为在高维空间中,向量之间的距离很难计算。 6. 适用于文本分类:余弦相似度可以用来计算文本之间的相似度,因此可以用于文本分类。 7. 适用于推荐系统:余弦相似度可以用于计算用户之间的相似度,因此可以用于推荐系统。 8. 可以处理词袋模型:余弦相似度可以用于处理词袋模型,因为它可以将文本表示为向量形式。 9. 不受绝对值的影响:余弦相似度只受向量的方向影响,而不受向量的绝对值大小的影响。 10. 可以与其他相似度度量方法结合使用:余弦相似度可以与其他相似度度量方法结合使用,从而提高相似度度量的准确性。 缺点: 1. 不考虑向量的重要性:余弦相似度只考虑向量的方向,而不考虑向量的重要性,因此可能会忽略一些重要的特征。 2. 对重复出现的单词敏感:余弦相似度对重复出现的单词敏感,因为它只考虑单词在文本中出现的次数。 3. 对文本的语法和语义不敏感:余弦相似度只考虑单词在文本中出现的次数,而不考虑单词的语法和语义,因此可能会忽略一些重要的信息。 4. 受向量的长度影响:余弦相似度受向量的长度影响,因此在计算相似度时需要对向量进行归一化处理。 5. 对稀疏向量计算较慢:余弦相似度在计算稀疏向量的相似度时比较慢,因为需要计算所有非零元素的乘积。 6. 对角度较大的向量计算不准确:余弦相似度对角度较大的向量计算不准确,因为角度较大的向量之间的差别很小。 7. 不适用于负数向量:余弦相似度不适用于负数向量,因为负数向量的方向很难确定。 8. 对相同向量计算相似度为1:余弦相似度对相同向量计算相似度为1,这可能会误导一些应用。 9. 不能解决语义相似度:余弦相似度不能解决语义相似度的问题,因为它只考虑单词在文本中出现的次数。 10. 对数据集的大小敏感:余弦相似度对数据集的大小敏感,因此需要对数据集进行采样或者降维处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值