15 Jun 2024C++ / Python / TypeScriptEasy

Longest Palindrome

Collected C++, Python, TypeScript solutions for longest palindrome. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Longest Palindrome. the solution files are available below.

solution files

  • C++ longest-palindrome/synced-solution.cpp
  • Python longest-palindrome/synced-solution.py
  • TypeScript longest-palindrome/synced-solution.ts

Solution files

Pythonlongest-palindrome/synced-solution.py
def longestPalindrome(s):
    from collections import Counter

    char_count = Counter(s)
    length = class="syntax-number">0
    has_odd = False

    for count in char_count.values():
        length += (count class=class="syntax-string">"syntax-comment">// class="syntax-number">2) * class="syntax-number">2
        if count % class="syntax-number">2 == class="syntax-number">1:
            has_odd = True

    return length + (class="syntax-number">1 if has_odd else class="syntax-number">0)
C++longest-palindrome/synced-solution.cpp
class Solution {
public:
    int longestPalindrome(string s) {
        unordered_map<char, int> count;

        for (char c : s) {
            count[c]++;
        }

        int length = class="syntax-number">0;
        bool has_odd = false;

        for (auto& p : count) {
            length += (p.second / class="syntax-number">2) * class="syntax-number">2;
            if (p.second % class="syntax-number">2 == class="syntax-number">1) {
                has_odd = true;
            }
        }

        return length + (has_odd ? class="syntax-number">1 : class="syntax-number">0);
    }
};
TypeScriptlongest-palindrome/synced-solution.ts
function longestPalindrome(s: string): number {
    const count = new Map<string, number>();

    for (const char of s) {
        count.set(char, (count.get(char) || class="syntax-number">0) + class="syntax-number">1);
    }

    let length = class="syntax-number">0;
    let hasOdd = false;

    for (const cnt of count.values()) {
        length += Math.floor(cnt / class="syntax-number">2) * class="syntax-number">2;
        if (cnt % class="syntax-number">2 === class="syntax-number">1) {
            hasOdd = true;
        }
    }

    return length + (hasOdd ? class="syntax-number">1 : class="syntax-number">0);
}