LeetCode---409. 最长回文串

题目链接:https://leetcode-cn.com/problems/longest-palindrome/description/

题目描述:

 算法描述:

分析下题目我们可以容易知道,只要某个字符的个数为偶数个的时候,那么这些字符一定可以构成回文数(因为题目没有要求这个回文数的顺序是怎样的),当某个字符的个数为为奇数个的时候,向下取偶就行了。

所以我们只需要统计原字符串中每个字符出现的次数,然后将其全部向下取偶数(即4->45->4)再求和,以及如果存在出现奇数次的字符,则在和的基础上再加1,就是最终结果了。

代码如下:

class Solution {
    public int longestPalindrome(String s) {
        int [] countArray=new int['z'-'A'+1];
        int count=0;
        boolean isOdd=false;
        for (char c : s.toCharArray()) {
			countArray[c-'A']++;
		}
        
        for(int i:countArray) {
        	count+=i/2;
        	if(!isOdd) {
        		isOdd=(i%2)!=0;
        	}
        }
        
        return count*2+ (isOdd?1:0);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39241239/article/details/82856979
今日推荐