LeetCode-Easy部分标签为HashTable 409. Longest Palindrome
2017-04-03 22:06
495 查看
原题
Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes thatcan 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.
题目意思
从给定的字符中选出一个最长的Palindrome,其定义为前后对称字符串。题目分析
借助哈希表,或字典,求某个字符出现的个数,若为偶数,则取字符串中此字符所有个数,若为奇数,个数减1即可,只保留一个奇数不减去1。代码实现1
纯Linq版本Dictionary<char, int> dict = s.GroupBy(item => item).ToDictionary(g => g.Key, g => g.ToArray().Count()); int rtn = dict.Where(item => item.Value % 2 == 0).Sum(item => item.Value); var oddList = dict.Where(item => item.Value % 2 == 1); int oddCount = oddList.Count(); if (oddCount > 0) return rtn + oddList.Sum(r => r.Value) - oddCount + 1; return rtn;
代码实现2
用Hashset实现,HashSet<int> hash = new HashSet<int>(); int count = 0; foreach(var item in s) { if (hash.Contains(item)) { hash.Remove(item); //配对成功, count++; //count加1 } else hash.Add(item); } return hash.Count > 0 ? count * 2 + 1 : count * 2;
更多参考
LeetCode-Easy部分中标签为HashTable的所有题目相关文章推荐
- LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
- LeetCode-Easy部分标签为HashTable 1. Two Sum(一种战胜95%的提交版本的算法)
- LeetCode-Easy部分中标签为HashTable的所有题目
- LeetCode-Easy部分标签为HashTable 447. Number of Boomerangs
- LeetCode-Easy部分标签为HashTable 463. Island Perimeter
- LeetCode-Easy部分中标签为Math 231. Power of Two
- LeetCode-Easy部分中标签为Array#118: Pascal’s Triangle
- LeetCode-Easy部分中标签为Math 268. Missing Number
- LeetCode-Easy部分标签为LinkedList 237. Delete Node in a Linked List
- LeetCode-Easy部分中标签为Array的所有题目
- LeetCode-Easy部分中标签为String 58. Length of Last Word
- LeetCode-Easy部分中标签为Two Pointers的所有题目
- LeetCode-Easy部分中标签为LinkedList 21. Merge Two Sorted Lists
- LeetCode-Easy部分标签为LinkedList 206. Reverse Linked List
- LeetCode-Easy部分中标签为Array#35: Search Insert Position
- LeetCode-Easy部分标签为LinkedList 83. Remove Duplicates from Sorted List
- LeetCode-Easy部分中标签为Two Pointers 345. Reverse Vowels of a String
- LeetCode-Easy部分中标签为LinkedList 203 Remove Linked List Elements
- LeetCode-Easy部分中标签为LinkedList 160. Intersection of Two Linked Lists
- LeetCode-Easy部分中标签为Array#414 : Third Maximum Number