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

深圳下周一居家办公宁波优化seo软件公司

深圳下周一居家办公,宁波优化seo软件公司,高州新闻 头条 今天,怎么创造软件app文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:最大单词长度乘积 出处:318. 最大单词长度乘积 难度 4 级 题目描述 要求 给定一个字符串数组 words \texttt{words} words&#xff0…

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:最大单词长度乘积

出处:318. 最大单词长度乘积

难度

4 级

题目描述

要求

给定一个字符串数组 words \texttt{words} words,返回 length(words[i]) × length(words[j]) \texttt{length(words[i])} \times \texttt{length(words[j])} length(words[i])×length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 \texttt{0} 0

示例

示例 1:

输入: words = ["abcw","baz","foo","bar","xtfn","abcdef"] \texttt{words = ["abcw","baz","foo","bar","xtfn","abcdef"]} words = ["abcw","baz","foo","bar","xtfn","abcdef"]
输出: 16 \texttt{16} 16
解释:这两个单词为 "abcw" \texttt{"abcw"} "abcw" "xtfn" \texttt{"xtfn"} "xtfn"

示例 2:

输入: words = ["a","ab","abc","d","cd","bcd","abcd"] \texttt{words = ["a","ab","abc","d","cd","bcd","abcd"]} words = ["a","ab","abc","d","cd","bcd","abcd"]
输出: 4 \texttt{4} 4
解释:这两个单词为 "ab" \texttt{"ab"} "ab" "cd" \texttt{"cd"} "cd"

示例 3:

输入: words = ["a","aa","aaa","aaaa"] \texttt{words = ["a","aa","aaa","aaaa"]} words = ["a","aa","aaa","aaaa"]
输出: 0 \texttt{0} 0
解释:不存在这样的两个单词。

数据范围

  • 2 ≤ words.length ≤ 1000 \texttt{2} \le \texttt{words.length} \le \texttt{1000} 2words.length1000
  • 1 ≤ words[i].length ≤ 1000 \texttt{1} \le \texttt{words[i].length} \le \texttt{1000} 1words[i].length1000
  • words[i] \texttt{words[i]} words[i] 只包含小写英语字母

解法

思路和算法

为了得到最大单词长度乘积,需要遍历数组 words \textit{words} words 中的每一对单词,判断两个单词是否含有公共字母,如果没有公共字母则计算这两个单词长度的乘积。对于长度为 n n n 的数组 words \textit{words} words,遍历每一对单词需要 O ( n 2 ) O(n^2) O(n2) 的时间,如果通过遍历两个单词判断两个单词是否含有公共字母,则时间复杂度高于 O ( n 2 ) O(n^2) O(n2)。为了降低时间复杂度,需要在 O ( 1 ) O(1) O(1) 的时间内判断两个单词是否含有公共字母,则时间复杂度是 O ( n 2 ) O(n^2) O(n2)

为了在 O ( 1 ) O(1) O(1) 的时间内判断两个单词是否含有公共字母,需要使用位运算。由于每个单词只包含小写英语字母,共有 26 26 26 个字母,因此每个单词可以使用 26 26 26 位二进制数表示该单词中出现的字母。具体表示方法是,二进制表示从低到高的第 0 0 0 位到第 25 25 25 位的每一位分别表示单词中是否出现 a \text{a} a z \text{z} z 的每个字母,如果一个二进制位是 1 1 1 则表示该位对应的字母在单词中出现,如果一个二进制位是 0 0 0 则表示该位对应的字母不在单词中出现。

得到每个单词的二进制表示之后,判断两个单词是否含有公共字母时,可以计算这两个单词对应的二进制表示的按位与运算结果。如果按位与运算结果是 0 0 0,则这两个单词不含有公共字母;如果按位与运算结果不是 0 0 0,则这两个单词含有公共字母,按位与运算结果中不是 0 0 0 的位表示公共字母。只有当按位与运算结果是 0 0 0 时,才需要计算这两个单词长度的乘积,并更新最大单词长度乘积。

代码

class Solution {public int maxProduct(String[] words) {int length = words.length;int[] masks = new int[length];for (int i = 0; i < length; i++) {String word = words[i];int wordLength = word.length();for (int j = 0; j < wordLength; j++) {char c = word.charAt(j);masks[i] |= 1 << (c - 'a');}}int maxValue = 0;for (int i = 0; i < length; i++) {for (int j = i + 1; j < length; j++) {if ((masks[i] & masks[j]) == 0) {int value = words[i].length() * words[j].length();maxValue = Math.max(maxValue, value);}}}return maxValue;}
}

复杂度分析

  • 时间复杂度: O ( n 2 + L ) O(n^2 + L) O(n2+L),其中 n n n 是数组 words \textit{words} words 的长度, L L L 是数组 words \textit{words} words 中的所有单词的长度之和。计算每个单词的二进制表示需要 O ( L ) O(L) O(L) 的时间遍历所有单词,计算最大单词长度乘积需要 O ( n 2 ) O(n^2) O(n2) 的时间遍历每一对单词,因此时间复杂度是 O ( n 2 + L ) O(n^2 + L) O(n2+L)

  • 空间复杂度: O ( n ) O(n) O(n),其中 n n n 是数组 words \textit{words} words 的长度。需要创建长度为 n n n 的数组存储每个单词的二进制表示。


文章转载自:

http://jvuT1f8R.rynqh.cn
http://KXYIzE9Z.rynqh.cn
http://zFstYC3Z.rynqh.cn
http://CaAYtpZ3.rynqh.cn
http://zhquplec.rynqh.cn
http://OxGYdC2o.rynqh.cn
http://d8ta6R0l.rynqh.cn
http://tKJ2IUHL.rynqh.cn
http://xakZ1LSM.rynqh.cn
http://sUftrUWK.rynqh.cn
http://r6C7TQFl.rynqh.cn
http://m4Iuvq6s.rynqh.cn
http://ZaqXzqXR.rynqh.cn
http://I8hDf6l5.rynqh.cn
http://DTVoYE9b.rynqh.cn
http://LT9E22Jv.rynqh.cn
http://WnMFB3OK.rynqh.cn
http://T0pCAaCu.rynqh.cn
http://20rGRt0v.rynqh.cn
http://QmE4nKy4.rynqh.cn
http://UFDnCg9T.rynqh.cn
http://PObw91YF.rynqh.cn
http://P1A9NSZh.rynqh.cn
http://qKvbdxhY.rynqh.cn
http://N3y3r16e.rynqh.cn
http://BYBeEcbR.rynqh.cn
http://ga6aqs0M.rynqh.cn
http://UOlpUiff.rynqh.cn
http://J0NauYTZ.rynqh.cn
http://mhLdqWUL.rynqh.cn
http://www.dtcms.com/wzjs/612341.html

相关文章:

  • 百度网站权重排行在百度上做网站
  • 大连百姓网免费发布信息网站网络服务器配置与管理考试题
  • app网站模板wordpress 点赞按钮
  • 外贸网站建设公司排名wordpress 如何安装
  • wordpress 图片显示插件下载网站排名seo软件
  • 一个主机建多少个网站网站备案 停站
  • 微信怎么建设自己网站张家港网站推广优化
  • 东莞品牌整合营销seo是什么意思网络用语
  • 婚庆手机版网站建设宿州网站开发建设
  • 网站建设程序有哪些方面上海网络广告推广平台
  • 设计公司网站模板心悦dnf免做卡网站
  • 湖南手机网站建设公司c 网站开发 vs2012
  • wap网站建设设计电商网站建设工具
  • 北京地铁建设的官方网站网站建设运营公司排行
  • 路桥建设局网站解决wordpress打开慢
  • 网站建设信息在哪儿发布手机网站怎么做的好处
  • 免流网站开发qq整人网站怎么做
  • 长兴建设局网站wordpress文章显示字数
  • 网站开发用的框架前端福建省住房和城乡建设厅门户网站
  • 做珠宝首饰网站电脑网络怎么连接
  • 网站框架是怎么做的怎么在微信建立公众号
  • 福州网站建设服务商怎样自己制作公司网站上传
  • 网站开发语言哪种简单wordpress comments_template
  • 手工做女宝宝衣服的网站wordpress网站怎么样
  • 可视化导航网站源码图片预览网站 末班
  • 最好的营销网站如何在社交网站上做视频推广
  • 马鞍山做网站的公司78友情链接代码模板
  • 企业网站好做吗闽侯县建设局网站
  • 山东华邦建设集团网站wordpress 禁止过滤
  • 免费企业网站程序上传淮南营销型网站建设怎么样