最大单词长度乘积(w位运算)

这篇具有很好参考价值的文章主要介绍了最大单词长度乘积(w位运算)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

318. 最大单词长度乘积 - 力扣(LeetCode)

技巧为int为32位,小写单词字母只由26位(大小写的话就是int_64t),将每一个字母确定一个独立的bit位,通过 & 计算来判断是否重复即可文章来源地址https://www.toymoban.com/news/detail-745571.html

int Init = []()
{
    cin.tie(0) -> sync_with_stdio(false);
    return 0;
}();
class Solution {
public:
    int maxProduct(vector<string>& words) 
    {
        int n = words.size();
        vector<int>cnt(n);
        int ans = 0;
        for(int i = 0;i < n;i++)
        {
            auto& s = words[i];
            int m = s.size();
            for(int j = 0; j < m; j++)
            cnt[i] |= (1 << (s[j] - 'a'));
        }
        for(int i = 0; i < n; i++)
        {
            for(int j = i + 1; j < n; j++)
            {
                if(!(cnt[i] & cnt[j]))
                ans = max(ans,(int)(words[i].size() * words[j].size()));
            }
        }
        return ans;
    }
};

到了这里,关于最大单词长度乘积(w位运算)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • dp算法 力扣152乘积最大子数组

    本文是Java代码!! 152. 乘积最大子数组 - 力扣(LeetCode) 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 示例 1: 输入

    2024年02月13日
    浏览(40)
  • 【C语言】每日一题(除自身以外数组的乘积)

    添加链接描述,链接奉上 暴力循换真的是差生法宝,简单好懂,就是不实用,大多数的题目都会超过时间限制(无奈) 思路: 1.写一个除自身的数组乘积函数 2.利用 for循环遍历数组 , i 作为循环变量,当遍历到 i 时,就求出除 i 以外的数组乘积 3.放入返回数组中 代码实现

    2024年02月10日
    浏览(38)
  • 罗勇军 →《算法竞赛·快冲300题》每日一题:“乘积” ← 动态规划

    【题目来源】 http://oj.ecustacm.cn/problem.php?id=1781 http://oj.ecustacm.cn/viewnews.php?id=1023 【题目描述】 给你一个长度为 n 的序列,序列中的元素只包括 1 和 -1。 请问有多少个连续的子序列乘积为正数。 【输入格式】 输入第一行为正整数 n。(n不超过10^6) 第二行包含 n 个整数。 【输

    2024年02月11日
    浏览(49)
  • 每日一题——反转字符串中的单词

    题目链接 思路(进阶) 我们首先不考虑太多限制因素,先看如何实现字符串中单词的反转 举个例子:我们要反转字符串“the sky is blue”中的单词,我们可以先将字符串中的每个字符反转“eht yks si eulb”,然后我们可以发现,从右到左看字符串正好就是我们想要的结果“blu

    2024年02月02日
    浏览(37)
  • 每日一题——LeetCode1455.检查单词是否为句中其他单词的前缀

    方法一 js函数slice()  将字符串按空格符分割为单词数组,记searchWord的长度为n,分割每个单词的前n位看是否和searchWord匹配 消耗时间和内存情况: 方法二 双指针: 来自leetcode官方题解 链接:1455.检查单词是否为句中其他单词的前缀 使用 start 记录单词的起始,end记录单词结尾

    2024年02月19日
    浏览(54)
  • Rust每日一练(Leetday0020) 最后单词的长度、螺旋矩阵II、排列序列

    目录 58. 最后一个单词的长度 Length of Last Word  🌟 59. 螺旋矩阵 II Spiral Matrix II  🌟🌟 60. 排列序列 Permutation Sequence  🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个字符串  s ,由

    2024年02月10日
    浏览(49)
  • ( 数组) 209. 长度最小的子数组——【Leetcode每日一题】

    难度:中等 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数

    2024年02月06日
    浏览(39)
  • 【每日一题】最大交换

    【暴力法】【贪心法】【数组】【2024-01-22】 670. 最大交换 本题的数据规模比较小,暴力法也可以通过。以下将会介绍暴力法和本题最优法。 思路 对于整数 num 的十进制数位最长只有八位,交换任意两个数位最多有 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28 7+6+5+4+3+2+1=28 7 + 6 + 5 + 4 + 3 + 2 + 1 = 2

    2024年01月24日
    浏览(37)
  • 【力扣每日一题】力扣2765最长交替子数组

    力扣2765最长交替子数组 给你一个下标从 0 开始的整数数组 nums 。如果 nums 中长度为 m 的子数组 s 满足以下条件,我们称它是一个 交替子数组 : m  大于  1  。  s1  =  s0  +  1  。 下标从  0  开始的子数组  s  与数组 [ s0 ,  s1 ,  s0 ,  s1 ,..., s(m-1) % 2 ] 一样。也就是说,

    2024年01月24日
    浏览(49)
  • 力扣每日一题90:子集

    给你一个整数数组  nums  ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集  不能  包含重复的子集。返回的解集中,子集可以按  任意顺序  排列。 示例 1: 示例 2: 提示: 1 = nums.length = 10 -10 = nums[i] = 10 通过次数 330.7K 提交次数 520.9K 通过率 63

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包