当前位置:网站首页>318. 最大单词长度乘积
318. 最大单词长度乘积
2022-07-01 03:23:00 【Sun_Sky_Sea】
318. 最大单词长度乘积
原始题目链接:https://leetcode.cn/problems/maximum-product-of-word-lengths/
给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。
示例 1:
输入:words = [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]
输出:16
解释:这两个单词为 “abcw”, “xtfn”。
示例 2:
输入:words = [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”]
输出:4
解释:这两个单词为 “ab”, “cd”。
示例 3:
输入:words = [“a”,“aa”,“aaa”,“aaaa”]
输出:0
解释:不存在这样的两个单词。
提示:
2 <= words.length <= 1000
1 <= words[i].length <= 1000
words[i] 仅包含小写字母
解题思路:
先去重数组中每个字符串,使用set集合去重,去重后的结果是个集合,转换成字符串,当做字典中的key,value是没去重的字符串的长度。判断当前字符串和字典中的字符串是否有交集,当去重后的字符串和没去重的字符串的长度不相等的时候,具体说是,去重后的小,这个时候判断。
代码实现:
class Solution:
def maxProduct(self, words: List[str]) -> int:
from collections import defaultdict
words_dict = defaultdict(int)
ans = 0
for word in words:
# 使用集合去重word
word_set = set(word)
# 转换成字符串,用做字典的key,以为set不能当做key,长度作为value
# 将去重后的字符串放进字典中,用于比较两个字符串是否有重合
word_set_str = ''.join(word_set)
# 如果字典中的去重后的字符长度比当前字符长度小,则有可能存在题目要求的最大值
if words_dict[word_set_str] < len(word):
# 遍历字典
for key in words_dict:
# 判断字典中的字符串和当前去重后的字符串是否有交集
# 没有交集,符合题意,更新最大值
if not set(key) & word_set:
ans = max(ans, len(word) * words_dict[key])
# 更新字典
words_dict[word_set_str] = len(word)
return ans
参考文献:
https://leetcode.cn/problems/maximum-product-of-word-lengths/solution/pythonjavajavascriptgo-zi-zhi-hashable-s-tuxj/
边栏推荐
- 【EI会议】2022年第三届纳米材料与纳米技术国际会议(NanoMT 2022)
- C语言的sem_t变量类型
- Ctfshow blasting WP
- RSN:Learning to Exploit Long-term Relational Dependencies in Knowledge Graphs
- LeetCode 128最长连续序列(哈希set)
- You cannot right-click F12 to view the source code solution on the web page
- Sort linked list (merge sort)
- 岭回归和lasso回归
- 监听器 Listener
- Leetcode 128 longest continuous sequence (hash set)
猜你喜欢

FCN full Convolution Network Understanding and Code Implementation (from pytorch Official Implementation)

Implement pow (x, n) function

Leetcode 128 longest continuous sequence (hash set)

Server rendering technology JSP

BluePrism注册下载并安装-RPA第一章

LeetCode 31下一个排列、LeetCode 64最小路径和、LeetCode 62不同路径、LeetCode 78子集、LeetCode 33搜索旋转排序数组(修改二分法)

Data exchange JSON

雪崩问题以及sentinel的使用
![[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理](/img/9f/187ca83be1b88630a6c6fbfb0620ed.png)
[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理

LeetCode 128最长连续序列(哈希set)
随机推荐
Learning notes for introduction to C language multithreaded programming
[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理
Cookie&Session
5. [WebGIS practice] software operation - service release and permission management
E15 solution for cx5120 controlling Huichuan is620n servo error
在 C 中声明函数之前调用函数会发生什么?
leetcode 1818 绝对值,排序,二分法,最大值
Design of serial port receiving data scheme
File upload and download
[小样本分割]论文解读Prior Guided Feature Enrichment Network for Few-Shot Segmentation
Cookie&Session
JUC learning
pytorch训练深度学习网络设置cuda指定的GPU可见
Server rendering technology JSP
快速筛选打卡时间日期等数据:EXCEL筛选查找某一时间点是否在某一时间段内
【EI会议】2022年国际土木与海洋工程联合会议(JCCME 2022)
使用selenium自动化测试工具爬取高考相关院校专业招生分数线及排名情况
C # realize solving the shortest path of unauthorized graph based on breadth first BFS -- complete program display
ES6解构语法详解
Binary tree god level traversal: Morris traversal