您的位置:首页 > 娱乐 > 明星 > 力扣刷题---409. 最长回文串【简单】

力扣刷题---409. 最长回文串【简单】

2024/10/5 14:39:07 来源:https://blog.csdn.net/m0_75266675/article/details/139125521  浏览:    关键词:力扣刷题---409. 最长回文串【简单】

在这里插入图片描述


题目描述

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

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

示例 1:

输入:s = “abccccdd”
输出:7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
示例 2:

输入:s = “a”
输出:1
示例 3:

输入:s = “aaaaaccc”
输出:7


算法分析

标签:哈希表

1.先用哈希表存储每种字符的出现次数
2.字符长度是偶数的直接假如count(结果)
3.字符长度是奇数的,先-1,变成偶数再假如count。
4.定义一个标签flg,判断是否有奇数,若有,那么最后的结果需要+1,放入回文串的最中间

在这里插入图片描述


完整代码

class Solution {
public:int longestPalindrome(string s) {unordered_map<char,int>count;//统计字符的数量//最长的回文串for(auto x:s)    count[x]++;    //如果有奇数次的字母,那么就+1,如果没有就不加    int ans=0;    int flg=0;//标记是否有1次的字母    for(auto kv:count)//kv:key value    {if(kv.second%2==0)//如果是偶数,全部取上    ans+=kv.second;    if(kv.second%2!=0)//如果是奇数,取偶数部分,就是-1    {ans+=kv.second-1;    flg=1;    }}   if(flg==1)    return ans+1;    else    return ans;    }
};

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com