LeetCode---409. 最長迴文串
阿新 • • 發佈:2018-11-10
題目連結:https://leetcode-cn.com/problems/longest-palindrome/description/
題目描述:
演算法描述:
分析下題目我們可以容易知道,只要某個字元的個數為偶數個的時候,那麼這些字元一定可以構成迴文數(因為題目沒有要求這個迴文數的順序是怎樣的),當某個字元的個數為為奇數個的時候,向下取偶就行了。
所以我們只需要統計原字串中每個字元出現的次數,然後將其全部向下取偶數(即4->4
、5->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); } }