2017年12月17日 星期日

[LeetCode] 409. Longest Palindrome

轉自LeetCode

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.
<Solution>

解題想法(參考資料)
  • 要能組成 palindrome,一定要有成雙的字母出現。所以用一個 hash set 來記錄,當一個字母出現兩次時,把它從 hash set 中刪除,然後將記數加 1,代表有1個成對的字母
  • 當所有字母都歷遍過後,如果 hash set 為空,代表所有字母都是成雙的,那麼總長度就是記數 * 2。如果 hash set 不為空,代表還有一個獨立的字元,總長度為記數 * 2 + 1
code 如下

C++

沒有留言:

張貼留言