go: add «409. Longest Palindrome»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-06-04 10:34:37 +02:00
parent 78f4a78500
commit bdc7307c3e
Signed by: mfocko
GPG key ID: 7C47D46246790496

26
go/longest-palindrome.go Normal file
View file

@ -0,0 +1,26 @@
package longest_palindrome
func longestPalindrome(s string) int {
getFreqs := func() map[rune]int {
freqs := make(map[rune]int)
for _, c := range s {
freqs[c]++
}
return freqs
}
freqs := getFreqs()
length := 0
usedOdd := false
for _, count := range freqs {
length += 2 * (count / 2)
if !usedOdd && count%2 == 1 {
length += 1
usedOdd = true
}
}
return length
}