3月打卡活动第19天 LeetCode第409题:最长回文串(简单)

Daphne ·
更新时间:2024-09-21
· 699 次阅读

3月打卡活动第19天 LeetCode第409题:最长回文串(简单) 题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。
在这里插入图片描述 解题思路:利用HashMap存储每个字母出现的次数。 class Solution { public int longestPalindrome(String s) { HashMap map = new HashMap(); int len = s.length(); if(len==0) return 0; if(len==1) return 1; for(int i=0;i<len;i++){ String ss = s.charAt(i) + ""; if(map.containsKey(ss)){ map.put(ss,map.get(ss)+1); }else{ map.put(ss,1); } } int max = 0; for(Map.Entry entry:map.entrySet()){ if(entry.getValue()%2!=0){ len--; max = 1; } } return max==1?len+1:len; } }

在这里插入图片描述

题解做法:用数组存储字母出现次数。 class Solution { public int longestPalindrome(String s) { int[] count = new int[128]; for (char c: s.toCharArray()) count[c]++; int ans = 0; for (int v: count) { ans += v / 2 * 2; if (v % 2 == 1 && ans % 2 == 0) ans++; } return ans; } }

在这里插入图片描述


作者:new_whiter



回文串 leetcode

需要 登录 后方可回复, 如果你还没有账号请 注册新账号