#yyds干货盘点# leetcode算法题:连接两字母单词得到的最长回文串

网友投稿 552 2022-10-17

#yyds干货盘点# leetcode算法题:连接两字母单词得到的最长回文串

#yyds干货盘点# leetcode算法题:连接两字母单词得到的最长回文串

题目:

给你一个字符串数组 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" 也是。

代码实现:

public int longestPalindrome(String[] words) { Map map=new HashMap<>(); for(int i=0;i>1)<<2); if(((map.get(s)&1)==1)){add=2;} } else{ String t=pal(s); if(map.containsKey(t)){ans+=Math.min(map.get(s),map.get(t))*2;} } } return ans+add; } public String pal(String s){ return new StringBuilder(s).reverse().toString(); }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:去掉不需要的加载项,让你的Office软件运行如飞
下一篇:微信小程序demo, 实现大部分官方组件和接口, 帮助快速上手开发.
相关文章

 发表评论

暂时没有评论,来抢沙发吧~