一.题目描述
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa"
不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
输入: "abccccdd","bananas" 输出: 7 5
二.代码题解
func longestPalindrome(s string) int {
maxLength := 0
tmpString := make(map[string]int)
for _, v := range s {
char := string(v)
if num, ok := tmpString[char]; ok {
tmpString[char] = num + 1
} else {
tmpString[char] = 1
}
}
isDot := false
firstLen := 0
for _, v := range tmpString {
if v%2 == 0 {
maxLength += v
}
if v%2 != 0 {
firstLen = v
maxLength = maxLength + ((v / 2) * 2)
isDot = true
}
}
if isDot == true {
maxLength = maxLength + 1
}
if isDot == true && len(tmpString) == 1 {
maxLength = firstLen
}
return maxLength
}