当前位置: 首页 > news >正文

318. 最大单词长度乘积

这道题求没有重复字母的两个字符串的最大长度乘积
重点在于怎么判断两个字符串没有重复字母
题目中只有小写字母,最多26个,于是想到使用26位二进制数来代表每一个字符串
有哪个字母就在对应位置设1
这个转换使用的是num |= 1 << (c-'a');
对字符串中的每一个字符c,将其与'a'做减法,得到1需要向左移动的位数,例如c代表字母d,则c-'a'=31<<3代表将1左移3位得到数字00...01000(26位),将其与num进行或运算,从而实现在字母d的位置设1。
而判断两个字符串是否重合,则可以通过二进制与运算实现
两者相与,若结果为0,则无重合字母,若结果为1,则有重合字母。
然后遍历数组,判断在结果为0的情况下,哪两个字符串的长度乘积最大。

class Solution {
public:int maxProduct(vector<string>& words) {vector<int> nums;for(auto word : words){int num = 0;for(auto c : word){num |= 1 << (c-'a');}nums.push_back(num);}int ans = 0;for(int i = 0; i < words.size(); i++){for(int j = i + 1; j < words.size(); j++){if((nums[i]&nums[j]) == 0){ans = max(ans, (int)(words[i].size() * words[j].size()));}}}return ans;}
};

另外,注意max比较时,要保证里面的变量类型相同。
强制类型转换需要前后都加括号,例如:

 (int)(words[i].size() * words[j].size())

不能写成:

  int(words[i].size() * words[j].size())

也不能写成:

(int)words[i].size() * words[j].size()
http://www.lryc.cn/news/220224.html

相关文章:

  • .NET Core 中插件式开发实现
  • 并查集模版以及两道例题
  • 英飞凌TLF35584规格书中文
  • 【教3妹学编程-算法题】最大单词长度乘积
  • 遇到python程序是通过sh文件启动的,如何调试
  • 应用系统集成-Spring Integration
  • 亚马逊与TEMU平台欧代英代如何注册?注册欧代/英代流程及注意事项
  • 【嵌入式开发工具】STM32+Keil实现软件工程搭建与开发调试
  • python 去除图像中的框
  • 企业邀约媒体的方式方法?-(快速精准)
  • 旅游业为什么要选择VR全景,VR全景在景区旅游上有哪些应用
  • 搭建第一个区块链网络与一键部署WeBASE步骤
  • MTK联发科、高通、紫光展锐手机SOC平台型号汇总(含详细参数)
  • 【ARM AMBA AXI 入门 12 -- AXI协议中的 WLAST 与 RLAST】
  • 11.6 知识总结(筛选器方法、操作标签、事件)
  • Devchat插件:AI智能编程助手,让你告别脏活累活。
  • 0-1矩阵列互斥问题——回溯法 Python实现
  • wandb 安装本地部署使用教程
  • 飞桨平台搭建PP-YOLOE模型
  • Js重点内容
  • 图形化ping工具gping
  • 快速安装虚拟机centos7.5
  • 2023.11.4 Idea 配置国内 Maven 源
  • DAY11 字符串处理函数
  • Web自动化测试 —— PageObject设计模式!
  • 七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora
  • Unreal Engine 学习笔记 (1)—— 日夜交替
  • leetcode:189. 轮转数组(python3解法)
  • 基于PHP + MySQL实现的文章内容管理系统源码+数据库,采用前后端分离的模板和标签化方式
  • 这可能是全网最晚的低代码技术总结