All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0401_0500.s0409_longest_palindrome.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0401_0500.s0409_longest_palindrome;

// #Easy #String #Hash_Table #Greedy #Data_Structure_II_Day_6_String #Level_1_Day_5_Greedy
// #2022_07_16_Time_2_ms_(92.90%)_Space_40.5_MB_(95.32%)

import java.util.BitSet;

/**
 * 409 - Longest Palindrome\.
 *
 * Easy
 *
 * Given a string `s` which consists of lowercase or uppercase letters, return _the length of the **longest palindrome**_ that can be built with those letters.
 *
 * Letters are **case sensitive** , for example, `"Aa"` is not considered a palindrome here.
 *
 * **Example 1:**
 *
 * **Input:** s = "abccccdd"
 *
 * **Output:** 7
 *
 * **Explanation:** One longest palindrome that can be built is "dccaccd", whose length is 7. 
 *
 * **Example 2:**
 *
 * **Input:** s = "a"
 *
 * **Output:** 1 
 *
 * **Example 3:**
 *
 * **Input:** s = "bb"
 *
 * **Output:** 2 
 *
 * **Constraints:**
 *
 * *   `1 <= s.length <= 2000`
 * *   `s` consists of lowercase **and/or** uppercase English letters only.
**/
public class Solution {
    public int longestPalindrome(String s) {
        BitSet set = new BitSet(60);
        for (char c : s.toCharArray()) {
            set.flip(c - 'A');
        }
        if (set.isEmpty()) {
            return s.length();
        }
        return s.length() - set.cardinality() + 1;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy