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

【LeetCode】每日一题 2023_11_6 最大单词长度乘积

文章目录

  • 刷题前唠嗑
  • 题目:最大单词长度乘积
    • 题目描述
    • 代码与解题思路
    • 偷看大佬题解
  • 结语

刷题前唠嗑


LeetCode? 启动!!!

题目:最大单词长度乘积

题目链接:318. 最大单词长度乘积

题目描述

代码与解题思路

不含公共字母的两个字符串的最大乘积,这要是一个个遍历求解,那得有多暴力啊,我选择直接开摆。。。偷看一眼题解看看有什么好方法

偷看大佬题解

。。。

怎么全是位运算啊。。。这个月到处都是位运算要把我弄疯啦

func maxProduct(words []string) (ans int) {marks := [1000]int{}for i, v := range words {t := 0for j := 0; j < len(v); j++ { // 用 int 的低 26 位来代指字母 a-z 是否出现u := v[j]-'a't |= 1<<u}marks[i] = t}for i := 0; i < len(words); i++ {for j := 0; j < i; j++ {if (marks[i]&marks[j]) == 0 { // 每个字符串对应的两个 int 执行 & 操作ans = max(ans, len(words[i])*len(words[j]))}}}return ans
}func max(a, b int) int {if a > b {return a}return b
}

这道题使用位运算的关键其实就是两句话:

  1. 我们使用一个 int 的低 26 位来代指字母 a-z 是否出现
  2. 每个字符串对应的两个 int 执行 & 操作,如果两字符无重复字符,则结果为 0

就是从 int 的二进制中拿 26 个位置来表示这个字符串的 26 个字母有没有出现,通过 | 操作标记,再通过 & 操作判断是否存在重复字符。

这里我开局开了一个 1000 的数组,主要是题目样例说有 1000 个字符串,所以我就直接开 1000 了,算是之前打算法竞赛的小习惯吧

至于哈希优化,饶了我吧。。。摆了

结语

没啥可说的,总之能过就行~

http://www.lryc.cn/news/219975.html

相关文章:

  • 【小白专用】PHP中的JSON转换操作指南 23.11.06
  • Web3游戏的十字路口:沿用传统IP还是另起炉灶?
  • 【系统架构设计】架构核心知识:4 系统可靠性分析与设计
  • 什么是站群服务器的优点?
  • 图数据库Neo4j——SpringBoot使用Neo4j 简单增删改查 复杂查询初步
  • -- Could NOT find livox_ros_driver (missing: livox_ros_driver_DIR)
  • 山东餐饮类行业可以办理那些认证?
  • 【抖音自动评论的软件】评论888无偿分享,和其开发技术与开发流程的分享
  • 挑战100天 AI In LeetCode Day02(2)
  • 《尚医通》Vue3 项目+TypeScript 前端项目(持续更新,附带源码)
  • 仪表盘 gauge
  • 常见面试题-MySQL专栏(三)MVCC、BufferPool
  • CDN加速:国内外价格与企业云服务最佳搭配方案
  • uni-app小程序使用vant
  • C-DS二叉树_另一棵树的子树
  • 祝贺璞华大数据产品入选中国信通院“铸基计划”
  • WebDAV之π-Disk派盘 + MiXplorer
  • java依赖的jar包下载
  • 苹果加大对印度的扶持,提高在其生产iphone的比重
  • 【漏洞复现】typecho_v1.0-14.10.10_unserialize
  • Linux常见面试题
  • HarmonyOS ArkTS基础知识
  • 嵌入式课后习题第一章解答
  • postMessage
  • 挑战100天 AI In LeetCode Day01(1)
  • 大数据疫情分析及可视化系统 计算机竞赛
  • uniapp调起拨打手机号
  • nacos配置中心docker部署、配置及 goLang 集成使用
  • PubDef:使用公共模型防御迁移攻击
  • 【QT5之QFtp模块】编译及使用