1. 程式人生 > >LeetCode---409. 最長迴文串

LeetCode---409. 最長迴文串

題目連結:https://leetcode-cn.com/problems/longest-palindrome/description/

題目描述:

 演算法描述:

分析下題目我們可以容易知道,只要某個字元的個數為偶數個的時候,那麼這些字元一定可以構成迴文數(因為題目沒有要求這個迴文數的順序是怎樣的),當某個字元的個數為為奇數個的時候,向下取偶就行了。

所以我們只需要統計原字串中每個字元出現的次數,然後將其全部向下取偶數(即4->45->4)再求和,以及如果存在出現奇數次的字元,則在和的基礎上再加1,就是最終結果了。

程式碼如下:

class Solution {
    public int longestPalindrome(String s) {
        int [] countArray=new int['z'-'A'+1];
        int count=0;
        boolean isOdd=false;
        for (char c : s.toCharArray()) {
			countArray[c-'A']++;
		}
        
        for(int i:countArray) {
        	count+=i/2;
        	if(!isOdd) {
        		isOdd=(i%2)!=0;
        	}
        }
        
        return count*2+ (isOdd?1:0);
    }
}