409. 最长回文串

一、题目

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

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

二、思路

遍历一次 hash 数组,统计奇数的个数,然后做一次减法即可。

三、代码

复制代码
class Solution {
public:
    int longestPalindrome(string s) {
        int hashCount[52] = {0};
        for(string::size_type i = 0; i < s.size(); i++) {
            if('a' <= s[i] && s[i] <= 'z') {
                hashCount[s[i]-'a']++;
            } else {
                hashCount[s[i]-'A'+26]++;
            }
        }
        int sum = 0;
        for(int i = 0; i < 52; i++) {
            if((sum&1) && (hashCount[i]&1)) {
                sum += hashCount[i]-1;
            } else {
                sum += hashCount[i];
            }
        }
        return sum;
    }
};
复制代码
posted @   ImreW  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示