AlgoLounge

Longest Palindrome

easy

You're given a string s made of lowercase and uppercase English letters. Using some or all of those letters — each one at most as many times as it appears in s — build the longest palindrome you can, and return its length.

Letters are case-sensitive: "Aa" is not a palindrome.

You only need the length, not the palindrome itself.

Examples

Example 1

Input:  s = "abacabad"
Output: 7

The letters are a×4, b×2, c×1, d×1. All four as and both bs fit around a single leftover letter in the middle, for example "abacaba".

Example 2

Input:  s = "Aa"
Output: 1

'A' and 'a' are different letters, so only one of them can be used.

Example 3

Input:  s = "bananas"
Output: 5

One possible answer is "anana". The b and s can't both be used — only one letter may sit unpaired in the middle.

Example 4

Input:  s = "zzzzzz"
Output: 6

Every letter is used: "zzzzzz" is already a palindrome.

Example 5

Input:  s = "Mississippi"
Output: 11

i×4, s×4 and p×2 all pair up, and the single M goes in the middle.

Constraints

  • 1 <= s.length <= 2000
  • s consists of lowercase and/or uppercase English letters only.
TypeScript
Loading editor…
List of test cases (43)
Case 1
s = "abacabad"
Case 2
s = "a"
Case 3
s = "Z"
Case 4
s = "aa"
Case 5
s = "Aa"
Case 6
s = "ab"
Case 7
s = "abc"
Case 8
s = "aaa"
Case 9
s = "aab"
Case 10
s = "abab"
Case 11
s = "aabbc"
Case 12
s = "aaabbb"
Case 13
s = "AaBbCc"
Case 14
s = "zzzzzz"
Case 15
s = "zzzzzzz"
Case 16
s = "racecar"
Case 17
s = "civic"
Case 18
s = "bananas"
Case 19
s = "Mississippi"
Case 20
s = "abccccdd"
Case 21
s = "aaaaaAAAAA"
Case 22
s = "xyzxyzxyz"
Case 23
s = "abcdefghijklmnopqrstuvwxyz"
Case 24
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Case 25
s = "aAbBcCdDeEfFaAbBcCdDeEfF"
Case 26
s = "TacoCat"
Case 27
s = "noon"
Case 28
s = "NooN"
Case 29
s = "bbbbbbbbbbbbc"
Case 30
s = "bBbcccaAccaA"
Case 31
s = "cbcaBabcaAbb"
Case 32
s = "cccAcBcbBcA"
Case 33
s = "bbbaBcAaBAa"
Case 34
s = "aAbaAcaAb"
Case 35
s = "BcBcaA"
Case 36
s = "outfIXXvNGTdtDnXETUJSMLgeyolgnkzPZscZnedwJLZzUyOnWPJmnpapZnZoXyHdmzYvpbyyKoGYgRCBTtUhodyuDxLyUrmEvoMWPwnMccSjIgyjTEdFheHsyynJaDCVfVvxTsLtBxeroMaQExntbxOlTITcYNdmVYgZkSBSqbTsdaajLIeudkwapDuZeEgwfPZnafTqSGOhdXAZjdZqlWzgjYS"
Case 37
s = "xXFQfVkqlCoIkpCilpSytnAWrFoFCrpydxtbUmGegcQxWDQeuDKcVrWJYUvwBxSQveeUHGpcnGuSHfYbKuETPZQRLkMktGEEAXopRZLnfRMQhxLZkDbgiPUziLcjeuJwScvSHVWjtINFhwcdPZbHFMFwQjXGKJGNfhONHhiJcHYZssYWGtSPLmOFTRpgWvaCEqMnoLe"
Case 38
s = "pNWcxASdUJkHWCwAPEOfOipADdTCTnQIkgPRZXdxkKvNyhSypiXpltHouFsJnXFaVttKKRtjLptmQEwBdpidXvanVOLRpxwgYmHQiUHfDGRcUCSAhSKzZqQFuFvXmdnJaOgriAjCJYPksbxIlUypEyywioxQigFSepHTXLKzAUjReSPfOyTYtzBxlTLBj"
Case 39
s = "sPbofSxfPrPVITDyBkJckrtkuToLbUzzVZQLVYGLFKKbCkgNrVyMGCKVVaPDwEfLTqGGkoyIBLQkprexziYEkvoNiiGIVDlzHcEAnhwxlAEhzcIwllyhhvnbnAbLDdPUHRtWNKgcdGbAhxQvSKjcCIYqaJaRoMDvjCwvIcZCbYrdHFySCPXlllvStumYtsuVLHKEHMyYGGjmLMbhCdWaXsRkWvhHFhKMvtsJrMBCSyzYICRCAXePFJxrddbcMtnFniJFNFgbAgJqrlevTsiCLaBqJkRvquxMmmrYlxsAdoOaopUrPmBCOqvkjMvwJcGJpiuODeqRZjTVataLBxAcsiEWxBfpwwlgBhtgKOTMyjlocwVgXpesJZrLYWCVDxxpHkLPESIHznCdmOZUUoeXiPhKDOKqXXWDncqhwBgijhPCkmIooRArdzjJzsdlLCGaxzDUGBPZNLrMUgVJMxZYvsIRqtUNNzhKLVpdlWiZtjaeOOGoYHGkphYMQZoLaehJbWdtghbYgvWquVwvMdTJrzTJEvHXzqjBJCfrOesYxICxDrNoIcoTGVRRMyBuCOxlVpDGRwlDGigrPuCqNwZOrtlxkhqrXlgAmaUATEAwGGwtYhmTtTAmvUUmHXjaUDtiIoxPKlArKQXlxJmUYdZOsWphJFrpfXiPKgmKhMYuNxvsRJxvQmbWMloJrfGjnTSjWhNnmqiBeQkzqxIoyuRKlDRMJmWghieqWShWxYpSVFqUQqHpAhcSjmGkhPGlIsrXMDwCcnamulnblxGqlwZXVfZHShSbKBbagQVpmTydnvFOvVtLIuXtjeIciJbVCaWysXAiMeBSUCjTUQxnhGitujhVrdEyclUeuxGPFoWdnpSxXnNPbZywuEoTNbsuzxbwFyWcAcOAivDBTEnVqowoogFOgMqqiIPQyXUCxGHEjcshNaYPcWllCwJBCnNEqWIqeFHaUuhtnhkbrcJEOXcaNoPSgbcKOBgEDMAQMQhrFsDCSDGHFLBDhZUHJjIMwchvLvzjYOLgKGdHOWmTwNzSzpFaDZByLsYyQDhHOvfvFNTDqRZBXcSUrdwKluREzqnvPGFsWkLoagczNlfcEClRMJwnRkLqyGPuepSWoqRVRGesckijimOOwkSVxLyYnuqMEOAKMrxpUDOyXiUHUucDvWAlrtoBNuSJEXhGHkmKztEJBjwDgcWmJjZRBrtiVvYJFhgDkpDVBahvzgMEdzJJChOVHtNmMvIBNAvkPMZkIErtXHlAJwYpaZiBuIAAQoxyJPuBbbyOlGfgQQPVzhIuXHvsWIMqByQRngXoszniBrgDaPMQMIpdFxqXKRPtrrfaOQAeIBkNlZYIBAYTgfjuBcSlatsUUgjFnmeLXDIxhxsRvOiMqgzDXqUZgzFxhPNfSUrtZEELEHJMERMPnupOIHlDJiqzQsGLYjSZahLPUFTGFRRMBsrWZsIdgACwswemBCDhpTpVVCCRJxwjKorROlRkRoeZYnarsmUseYaKdewTjgeupvPaAkjiOwGljflaFuEBfiAKWiQYUXLjDllKiKmWFiXLytwprVegVamKZvZDZcEqqrttbQQoywSXNOesjIVQImQLpSkurGoJOlfsgNQtlpHcyUJHFyWeqHVlfiErGFXSWNeTdeqcqFOmGGoMUrONXtqBxuewNviihVCVWMGSYWOwPzReOBjALyXmplchVCHoIxurqnDzdZYhrtTROZcqwsleMfjOEratzNwxTNtmzsGpercRRPgsHFnhltdlDWyizbTLTvGnfgOBFaTiIgzaBVOCDKMDCxKnayrrJkmFcrvRXiHTXMLffgHEMOXPkNCzmHATCfkAMKgsujftwLdaTcXMGFkaaatIOXiORbwYKpEvDfnSFAcSDLqhPwUwUoOyGdKdDqzkrPFxrqJFPsWAMYJABVnhyqQWGceXMxJaxVWhIQEuTutckFciwQXZIYktveiUkwrprbzMkCcvQXeElNTuKRTAaQKc"
Case 40
s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Case 41
s = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
Case 42
s = "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzzAABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"
Case 43
s = "aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzzAAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ"