mirror of
				https://git.wolves.top/wolves/leetcode.git
				synced 2025-11-04 09:16:32 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			754 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			754 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
func Reverse(s string) string {
 | 
						|
	bytes := []byte(s) // 直接转为字节切片
 | 
						|
	for i, j := 0, len(bytes)-1; i < j; i, j = i+1, j-1 {
 | 
						|
		bytes[i], bytes[j] = bytes[j], bytes[i] // 交换字节
 | 
						|
	}
 | 
						|
	return string(bytes)
 | 
						|
}
 | 
						|
 | 
						|
func longestPalindrome(words []string) int {
 | 
						|
	m := make(map[string]int)
 | 
						|
	res, center := 0, 0
 | 
						|
	for _, word := range words {
 | 
						|
		m[word]++
 | 
						|
	}
 | 
						|
	for word := range m {
 | 
						|
		if m[word] == 0 {
 | 
						|
			continue
 | 
						|
		}
 | 
						|
 | 
						|
		reversed := Reverse(word)
 | 
						|
 | 
						|
		if reversed == word {
 | 
						|
			pairs := m[word] / 2
 | 
						|
			res += pairs * 2 * 2
 | 
						|
			if m[word]%2 == 1 {
 | 
						|
				center = 2
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			if m[reversed] >= 1 {
 | 
						|
				pairs := min(m[word], m[reversed])
 | 
						|
				res += pairs * 4
 | 
						|
				m[word] -= pairs
 | 
						|
				m[reversed] -= pairs
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return res + center
 | 
						|
}
 |