409. 最長回文串
- 1. 題目描述
- 2.代碼如下
1. 題目描述
給定一個包含大寫字母和小寫字母的字元串,找到通過這些字母構造成的最長的回文串。
在構造過程中,請注意區分大小寫。比如 “Aa” 不能當做一個回文字元串。
注意:
假設字元串的長度不會超過 1010。
示例 1:
輸入:
“abccccdd”
輸出:
7
解釋:
我們可以構造的最長的回文串是"dccaccd", 它的長度是 7。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/longest-palindrome
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2.代碼如下
//最長回文串:(從前至後或者從後至前周遊都是一樣的字元串 )
//思路:将字元串的出現的次數與字元串建立映射關系,由回文串的特點知道,相同字元出現的次數為偶數,則一定可以參與構成回文串,為奇數則表明該回文串可以有一個中心字元串。
2019-04-27
int longestPalindrome(char * s){
//若生成的字元串為回文字元串,需要除了中心字元,其餘字元隻要頭部出現,尾部就要對應出現。
int len = 0;
int centerlag = 0;
int hash_map[128] = {0};
for(int i =0;s[i]!='\0';i++)
{
hash_map[s[i]]++;
}
for(int i =0;i<128;i++)
{
if(hash_map[i]%2==0)
{
len += hash_map[i];
}
else
{
len += hash_map[i]-1;
centerlag = 1;
}
}
if(centerlag)
{
return len+=1;
}
else
{
return len;
}
}