文章目录

  • 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. 连接两字母单词得到的最长回文串相关推荐

  1. 力扣2131——连接两字母单词得到的最长回文串(贪心+哈希表)

    题目(中等) 给你一个字符串数组 words .words 中每个元素都是一个包含 两个 小写英文字母的单词. 请你从 words 中选择一些元素并按 任意顺序 连接它们,并得到一个 尽可能长的回文串 ...

  2. Leetcode69场双周赛-第三题5962. 连接两字母单词得到的最长回文串

    5962. 连接两字母单词得到的最长回文串 题目描述 解题思路和解题代码 定义map和sameMap.如果两个字母一样,就看sameMap里面有没有记录,有的话把该记录取出来,结果总数+4,没有的话, ...

  3. LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串: 从 word1 中选出某个 非空 子序列 subsequence1 . 从 ...

  4. LeetCode解题记录(409)——最长回文串

    LeetCode解题记录--最长回文串 题目描述 示例 题目理解 解题思路 题目描述 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比 ...

  5. python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)

    最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...

  6. LeetCode 409. 最长回文串(构造最长回文判断)

    最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字 ...

  7. LeetCode最长回文串

    409. 最长回文串 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回 ...

  8. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

  9. LeetCode简单题之最长回文串

    题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回文字符串. 示例 ...

最新文章

  1. Material Design Lite,简洁惊艳的前端工具箱。
  2. C# 获取utc时间,以及utc datetime 互相转化
  3. 计算机与材料化学应用背景介绍,计算机在材料工程中的应用.ppt
  4. 如何在Kubernetes里创建一个Nginx service 1
  5. Coursera自动驾驶课程第8讲:Basics of 3D Computer Vision
  6. 使用 Spring Boot Security 进行安全控制
  7. 如何使用UIAutomation进行iOS 自动化测试(Part II)
  8. 注册网站域名多少钱_浅析网站域名申请注册的四种常见方式
  9. 【上汽零束SOA】云管端一体化SOA软件平台系列介绍之一:产品篇
  10. TI KeyStone C66x开发板的Xilinx FPGA下载器接口、LED指示灯
  11. Linux下设置网卡速率 降低网卡速度
  12. 微信小程序获取二维码scene报错40129
  13. python控制手机
  14. [OpenCV实战]39 在OpenCV中使用ArUco标记的增强现实
  15. 深入理解计算机系统2——信息表示和处理
  16. vim光标跳转行首/行尾
  17. 科研小白之SCI论文、EI论文和IEEE论文有什么区别?国内分区与SCI等的联系
  18. Mutex与Semaphore 第二部分 互斥锁
  19. (附源码)ssm学生考勤管理系统 毕业设计 260952
  20. 计算机控制系统AD实验报告,实验一AD转换实验报告.docx

热门文章

  1. 访问linux服务主机,如何把Linux配置为日志服务主机。
  2. Django Model设计详解
  3. 数字图像处理:各种变换滤波和噪声的类型和用途总结
  4. halcon资料链接
  5. asp.net matlab,ASP.NET与MATLAB混合编译以及数据传递【更新中】
  6. mysql接口可以重载吗_php 到底可不可以重载
  7. matlab教程蚁群算法,蚁群算法怎样用MATLAB仿真
  8. sublime中编译的sass如何改变css输出风格?【这里有答案】
  9. 抽象类(Abstract)和接口的不同点、共同点(Interface)。
  10. C++学习10 static静态成员变量和静态成员函数