Skip to content

Latest commit

 

History

History

0409.longest-palindrome

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

题目描述

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

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

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

示例 1:

输入:
"abccccdd"

输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

解题思路

具体解法

Golang

func longestPalindrome(s string) int {

	// abccccdd
	sMap := make(map[byte]int)
	for i := range s {
		if _, ok := sMap[s[i]]; ok {
			sMap[s[i]]++
		} else {
			sMap[s[i]] = 1
		}
	}
	var count int
	var flag bool
	for _, num := range sMap {
		if num%2 != 0 {
			flag = true
			num--
		}
		count += num
	}
	if flag == true {
		count++
	}
	return count
}