博客
关于我
Leetcode 318 最大单词长度乘积 (字符串用位运算预处理在O(1)时间判断两个字符串没有相同字符)
阅读量:246 次
发布时间:2019-03-01

本文共 727 字,大约阅读时间需要 2 分钟。

直接枚举,时间复杂度是O(N^2L), 因为判断两个字符串是否有相同的字符,需要O(L)的时间

用位运算将字符串映射到一个int,如果完全没有重复的字符,那么这两个int &后为0

class Solution {public:    int map(const string& s) {        int res = 0;        for (auto c : s)            res |= 1 << (c - 'a');        return res;    }    int maxProduct(vector
& words) { int n = words.size(); vector
bitmap(n, 0); for (int i = 0; i < n; i++) bitmap[i] = map(words[i]); int res = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { if ((bitmap[i] & bitmap[j]) == 0 && words[i].size() * words[j].size() > res) res = words[i].size() * words[j].size(); } } return res; }};

 

转载地址:http://fdqv.baihongyu.com/

你可能感兴趣的文章
Mysql建立中英文全文索引(mysql5.7以上)
查看>>
mysql建立索引的几大原则
查看>>
Mysql建表中的 “FEDERATED 引擎连接失败 - Server Name Doesn‘t Exist“ 解决方法
查看>>
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
查看>>
MySQL异步操作在C++中的应用
查看>>
Mysql当前列的值等于上一行的值累加前一列的值
查看>>
MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
查看>>
MySQL必知必会(组合Where子句,Not和In操作符)
查看>>
MySQL必知必会总结笔记
查看>>
MySQL快速入门
查看>>
MySQL快速入门——库的操作
查看>>
mysql快速复制一张表的内容,并添加新内容到另一张表中
查看>>
mysql快速查询表的结构和注释,字段等信息
查看>>
mysql怎么删除临时表里的数据_MySQL中关于临时表的一些基本使用方法
查看>>
mysql性能优化
查看>>
MySQL性能优化必备25条
查看>>
Mysql性能优化(1):SQL的执行过程
查看>>
Mysql性能优化(2):数据库索引
查看>>
Mysql性能优化(3):分析执行计划
查看>>
Mysql性能优化(4):优化的注意事项
查看>>