409.longest-palindrome.go 363 B

12345678910111213141516171819202122232425
  1. func longestPalindrome(s string) (l int) {
  2. freq := make([]int, 256)
  3. for _, r := range s {
  4. freq[r]++
  5. }
  6. hasOdd := false
  7. for i := 'a'; i <= 'z'; i++ {
  8. l += freq[i]
  9. if freq[i]&1 == 1 {
  10. l--
  11. hasOdd = true
  12. }
  13. }
  14. for i := 'A'; i <= 'Z'; i++ {
  15. l += freq[i]
  16. if freq[i]&1 == 1 {
  17. l--
  18. hasOdd = true
  19. }
  20. }
  21. if hasOdd {
  22. return l + 1
  23. }
  24. return
  25. }