leetcode409. 最长回文串

举报
兔老大 发表于 2021/04/28 01:19:28 2021/04/28
【摘要】 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 思路:记录字符...

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:
假设字符串的长度不会超过 1010。

示例 1:

输入:
"abccccdd"

输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

思路:记录字符出现的次数,出现两次就可以对称放,对应的回文串长度+2.

中间可能会加一个单独字母做对称轴,所以如果有一个字母出现奇数次,我们把他放到中间,长度+1.


  
  1. class Solution {
  2. public int longestPalindrome(String s) {
  3. int[] count = new int[128];
  4. for (char c: s.toCharArray())
  5. count[c]++;
  6. int ans = 0;
  7. for (int v: count) {
  8. ans += v / 2 * 2;
  9. if (v % 2 == 1 && ans % 2 == 0)ans++;
  10. }
  11. return ans;
  12. }
  13. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/104298793

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。