LeetCode 409. 最长回文串(计数)

Scarlett ·
更新时间:2024-09-21
· 556 次阅读

1. 题目

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

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

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

示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 2. 解题 对字符计数,偶数直接加上,奇数-1加上 最后出现过基数次的,在加个1(回文中间的字符) class Solution { public: int longestPalindrome(string s) { int count[52] = {0}, sum = 0; bool odd = false; for(char& c : s) { if(islower(c)) count[c-'a']++; else count[c-'A'+26]++; } for(int i = 0; i < 52; ++i) { if(count[i]%2 == 0) sum += count[i]; else { odd = true; sum += count[i]-1; } } return odd ? sum+1 : sum; } };

在这里插入图片描述


作者:Michael阿明



回文串 leetcode

需要 登录 后方可回复, 如果你还没有账号请 注册新账号