Longest Palindrome

云计算 waitig 527℃ 百度已收录 0评论

Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.

This is case sensitive, for example "Aa" is not considered a palindrome
here.

Note:
Assume the length of given string will not exceed 1,010.

Example: 

Input:
"abccccdd"

Output:
7

Explanation:
One longest palindrome that can be built is "dccaccd", whose length is 7.
java
class Solution {
    public int longestPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        int len = 0;
        int count = 0;
        int[] arr = new int[256];
        char[] c = s.toCharArray();
        for (int i = 0; i < c.length; i++) {
            arr[c[i]]++;
        }
        for (int i = 0; i < 256; i++) {
            if (arr[i] % 2 == 0) {
                len += arr[i];
            } else {
                count++;
                len += (arr[i] - 1);
            }
        }
        if (count == 0) {
            return len;
        } else {
            return len + 1;
        }
    }
}

python

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: int
        """
        if s is None or len(s) == 0:
            return 0
        lenx, count = 0, 0
        arr = [0] * 256
        for c in s:
            arr[ord(c)] += 1
        for i in range(256):
            if arr[i] % 2 == 0:
                lenx += arr[i]
            else:
                lenx += arr[i] - 1
                count += 1
        if count == 0:
            return lenx
        else:
            return lenx + 1
        

本文由【waitig】发表在等英博客
本文固定链接:Longest Palindrome
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)