1
0

2131.go 754 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package main
  2. func Reverse(s string) string {
  3. bytes := []byte(s) // 直接转为字节切片
  4. for i, j := 0, len(bytes)-1; i < j; i, j = i+1, j-1 {
  5. bytes[i], bytes[j] = bytes[j], bytes[i] // 交换字节
  6. }
  7. return string(bytes)
  8. }
  9. func longestPalindrome(words []string) int {
  10. m := make(map[string]int)
  11. res, center := 0, 0
  12. for _, word := range words {
  13. m[word]++
  14. }
  15. for word := range m {
  16. if m[word] == 0 {
  17. continue
  18. }
  19. reversed := Reverse(word)
  20. if reversed == word {
  21. pairs := m[word] / 2
  22. res += pairs * 2 * 2
  23. if m[word]%2 == 1 {
  24. center = 2
  25. }
  26. } else {
  27. if m[reversed] >= 1 {
  28. pairs := min(m[word], m[reversed])
  29. res += pairs * 4
  30. m[word] -= pairs
  31. m[reversed] -= pairs
  32. }
  33. }
  34. }
  35. return res + center
  36. }
备用站点 当前处于降级运行的备用站点,仅供应急访问,数据和功能可能不是最新。