博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode "Maximum Product of Word Lengths"
阅读量:5339 次
发布时间:2019-06-15

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

Another O(n^2) solution using bit ops. We prune 1/2(expected) candidates at each bit check.

#define MAX_BITS 1600typedef bitset
CandMask;class Solution { // string to char bit mask uint32_t w2m(const string &s) { uint32_t ret = 0; for (auto c : s) ret |= 1 << (c - 'a'); return ret; }public: int maxProduct(vector
& words) { int n = words.size(); // Calculate masks of each word vector
wmasks; for (auto &s : words) wmasks.push_back(w2m(s)); // Categorize words by each bit on\off vector
> recs(26, vector
(2)); for (int i = 0; i < n; i++) for (int b = 0; b < 26; b++) { if (wmasks[i] & (1 << b)) recs[b][1][i] = 1; else recs[b][0][i] = 1; } // CandMask OrigCandMask; for (int k = 0; k < wmasks.size(); k++) OrigCandMask[k] = 1; int ret = 0; for (int i = 0; i < n; i++) { uint32_t m = wmasks[i]; int len1 = words[i].length(); // Binary search by bits CandMask candidates = OrigCandMask; for (int b = 0; b < 26; b++) if (m & (1 << b)) candidates &= (~recs[b][1]); for (int k = 0; k < min(n, MAX_BITS); k++) if (candidates[k]) ret = max(ret, len1 * int(words[k].length())); } return ret; }};

转载于:https://www.cnblogs.com/tonix/p/5052880.html

你可能感兴趣的文章
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
XML中CDATA和#PCDATA的区别
查看>>
6)添加一个窗口的图标
查看>>
SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
查看>>
ssh和alias快速登录远程机器
查看>>
转载-Eclipse导入第三方库的方法
查看>>
Linux搭建XMPPserverTigase(Sparkclient測试)
查看>>
redis 存取问题
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
[技术分享] 20171130_乱码_本地显示无乱码,服务器上出现乱码
查看>>
greenTomlee
查看>>
fault error and failure
查看>>
【FOJ】2075 Substring
查看>>
UML系列图--状态图
查看>>
后台返回json可能会出现的异常解析:java.lang.IllegalStateException: WRITER
查看>>
Road Map
查看>>
关于sql server 2008过期导致 MSSQLSERVER服务就无法启动,手动启动就报告错误代码17051。...
查看>>
正则替换中的一个Bug
查看>>
ProxySQL实现Mysql读写分离 - 部署手册
查看>>
centos7.4下Jira6环境部署及破解操作记录(完整版)
查看>>