Leetcode 409 Longest Palindrome
本題是給定一個字串,求可以用其中字元組成的最長迴文長度。
Link:https://leetcode.com/problems/longest-palindrome/
思路:
1,暴力破解,挨個列舉,時間複雜度O(n!)
2, 用hashtable記錄每個字元出現的次數,成對出現(2的倍數)即視為可組成迴文,最終落單的+1放中間,時間複雜度O(n)
比如:’abccccdd’
a: 1 b: 1 c: 4 d: 2
最終轉換成
a: 1 b: 1 c: 0 d: 0
程式碼:
function getCounts(s) { const hashtable = {}; let char = null; for (let idx = 0; idx < s.length; idx++) { char = s[idx]; if (hashtable[char]) { hashtable[char]++; } else { hashtable[char] = 1; } } return hashtable; } var longestPalindrome = function(s) { const table = getCounts(s); let left = 0; let count = 0; for (const key in table) { const item = table[key]; count += Math.floor(item / 2); table[key] = item % 2; left += table[key]; } if (left > 0) { return count * 2 + 1; } else { return count * 2; } };