LeetCode 2131. 连接两字母单词得到的最长回文串
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你一个字符串数组 words 。words 中每个元素都是一个包含 两个 小写英文字母的单词。
请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 。每个元素 至多 只能使用一次。
请你返回你能得到的最长回文串的 长度 。如果没办法得到任何一个回文串,请你返回 0 。
回文串 指的是从前往后和从后往前读一样的字符串。
示例 1:
输入:words = ["lc","cl","gg"]
输出:6
解释:一个最长的回文串为 "lc" + "gg" + "cl" = "lcggcl" ,长度为 6 。
"clgglc" 是另一个可以得到的最长回文串。示例 2:
输入:words = ["ab","ty","yt","lc","cl","ab"]
输出:8
解释:最长回文串是 "ty" + "lc" + "cl" + "yt" = "tylcclyt" ,长度为 8 。
"lcyttycl" 是另一个可以得到的最长回文串。示例 3:
输入:words = ["cc","ll","xx"]
输出:2
解释:最长回文串是 "cc" ,长度为 2 。
"ll" 是另一个可以得到的最长回文串。"xx" 也是。提示:
1 <= words.length <= 10^5
words[i].length == 2
words[i] 仅包含小写英文字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindrome-by-concatenating-two-letter-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 两个字符一样的,可以放在对称两侧还可以在中间,中间只能出现一次
- 两个不一样的字符 xy,需要看 yx 是否也存在,配对使用
class Solution:def longestPalindrome(self, words: List[str]) -> int:ct = {}for w in words:if w in ct:ct[w] += 1else:ct[w] = 1ans = 0same_odd = 0for w, num in ct.items():if w[0]==w[1]: # 一样if ct[w]%2==1:same_odd = 1ans += ct[w]//2*4elif w[::-1] in ct and w > w[::-1]:ans += 4*min(ct[w], ct[w[::-1]])return ans+(2 if same_odd else 0)
164 ms 32.1 MB Python3
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 2131. 连接两字母单词得到的最长回文串相关推荐
- 力扣2131——连接两字母单词得到的最长回文串(贪心+哈希表)
题目(中等) 给你一个字符串数组 words .words 中每个元素都是一个包含 两个 小写英文字母的单词. 请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 ...
- Leetcode69场双周赛-第三题5962. 连接两字母单词得到的最长回文串
5962. 连接两字母单词得到的最长回文串 题目描述 解题思路和解题代码 定义map和sameMap.如果两个字母一样,就看sameMap里面有没有记录,有的话把该记录取出来,结果总数+4,没有的话, ...
- LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)
文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串: 从 word1 中选出某个 非空 子序列 subsequence1 . 从 ...
- LeetCode解题记录(409)——最长回文串
LeetCode解题记录--最长回文串 题目描述 示例 题目理解 解题思路 题目描述 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比 ...
- python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)
最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...
- LeetCode 409. 最长回文串(构造最长回文判断)
最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...
- LeetCode最长回文串
409. 最长回文串 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回 ...
- leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间
题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...
- LeetCode简单题之最长回文串
题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回文字符串. 示例 ...
最新文章
- Material Design Lite,简洁惊艳的前端工具箱。
- C# 获取utc时间,以及utc datetime 互相转化
- 计算机与材料化学应用背景介绍,计算机在材料工程中的应用.ppt
- 如何在Kubernetes里创建一个Nginx service 1
- Coursera自动驾驶课程第8讲:Basics of 3D Computer Vision
- 使用 Spring Boot Security 进行安全控制
- 如何使用UIAutomation进行iOS 自动化测试(Part II)
- 注册网站域名多少钱_浅析网站域名申请注册的四种常见方式
- 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之一:产品篇
- TI KeyStone C66x开发板的Xilinx FPGA下载器接口、LED指示灯
- Linux下设置网卡速率 降低网卡速度
- 微信小程序获取二维码scene报错40129
- python控制手机
- [OpenCV实战]39 在OpenCV中使用ArUco标记的增强现实
- 深入理解计算机系统2——信息表示和处理
- vim光标跳转行首/行尾
- 科研小白之SCI论文、EI论文和IEEE论文有什么区别?国内分区与SCI等的联系
- Mutex与Semaphore 第二部分 互斥锁
- (附源码)ssm学生考勤管理系统 毕业设计 260952
- 计算机控制系统AD实验报告,实验一AD转换实验报告.docx
热门文章
- 访问linux服务主机,如何把Linux配置为日志服务主机。
- Django Model设计详解
- 数字图像处理:各种变换滤波和噪声的类型和用途总结
- halcon资料链接
- asp.net matlab,ASP.NET与MATLAB混合编译以及数据传递【更新中】
- mysql接口可以重载吗_php 到底可不可以重载
- matlab教程蚁群算法,蚁群算法怎样用MATLAB仿真
- sublime中编译的sass如何改变css输出风格?【这里有答案】
- 抽象类(Abstract)和接口的不同点、共同点(Interface)。
- C++学习10 static静态成员变量和静态成员函数