题目描述
解法
哈希表
贪心算法
- 贪心策略:对于偶数串,我们全都要,对于奇数串,我们可以-1再要(变相将其变为偶数串)最后因为只能有一个奇数串占据中间位置(如果有奇数串)我们整体+1;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public int longestPalindrome(String s) { int cnt=0; HashMap<Character,Integer> hashMap=new HashMap<>(); for (int i = 0; i <s.length(); i++) { if(!hashMap.containsKey(s.charAt(i))){ hashMap.put(s.charAt(i),1); } else { hashMap.put(s.charAt(i),hashMap.get(s.charAt(i))+1); } } for (Integer value : hashMap.values()) { if(value%2==0){ cnt+=value; } else { cnt+=(value-1); }
} if (s.length()>cnt){ cnt++; } return cnt; } }
|
- 时间复杂度:O(N),其中 N 为字符串
s
的长度
链接:409. 最长回文串 - 力扣(LeetCode) (leetcode-cn.com)
来源:力扣(LeetCode)