Leetcode409最长回文串 -字符哈希
生活随笔
收集整理的這篇文章主要介紹了
Leetcode409最长回文串 -字符哈希
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。
在構造過程中,請注意區分大小寫。比如 “Aa” 不能當做一個回文字符串。
注意:假設字符串的長度不會超過 1010。
示例 1:
輸入:
“abccccdd”
輸出:
7
解釋:
我們可以構造的最長的回文串是"dccaccd", 它的長度是 7。
思路
字符哈希:數組下標,ASCII碼值映射。
字母出現偶數個,直接統計長度。
字母出現奇數個,舍棄一個字母,該字母需要標志位標識;剩余變成偶數,直接統計出現次數。
最后的結果:偶數統計的數量+flag(如果出現奇數個,作為中間那個字母)。
AC代碼
class Solution { public:int longestPalindrome(string s) {if(s.length()==0)//空串return 0;int char_map[128]={0};//下標統計int max_length=0;//回文串偶數部分最大長度int flag=0;//中心位標記,奇數for(int i=0;i<s.length();i++)char_map[s[i]]++;for(int i=0;i<128;i++){if(char_map[i]%2==0)//偶數個max_length+=char_map[i];else//奇數個{max_length+=char_map[i]-1;//處理成偶數flag=1;//奇數個,標志,放中間}}return max_length+flag;//偶數部分+中間位} };題目來源:力扣(LeetCode)
鏈接:請點擊https://leetcode-cn.com/problems/longest-palindrome
總結
以上是生活随笔為你收集整理的Leetcode409最长回文串 -字符哈希的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++容器map可以排序吗?
- 下一篇: 什么是数字化人才建设的重要性?