From bdc7307c3e37bc6c22d924b1462eb112cb22864a Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Tue, 4 Jun 2024 10:34:37 +0200 Subject: [PATCH] =?UTF-8?q?go:=20add=20=C2=AB409.=20Longest=20Palindrome?= =?UTF-8?q?=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- go/longest-palindrome.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 go/longest-palindrome.go diff --git a/go/longest-palindrome.go b/go/longest-palindrome.go new file mode 100644 index 0000000..bc13910 --- /dev/null +++ b/go/longest-palindrome.go @@ -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 +}