Leetcode——409. Longest Palindrome

题目原址

https://leetcode.com/problems/longest-palindrome/description/

题目描述

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.

解题思路

将给定的字符串重新排列,使其成为一个回文,返回能得到回文长度最大的回文长度。

  • 定义一个boolean类型的数组,数组的长度为128,定义为128是为了可以不判断大小写
  • 通过for循环遍历数组中的元素,数组的值作为数组的下标,把数组的值取反,这样当最后元素的值为真的时候,就说明可以作为一个回文,所以可以将ret返回值+2
  • 最后要判断ret是否小于字符串的长度,如果小于,就说明可以给原来的回文多加一个字符,奇数个字符串。将多加的一个字符放在回文字符串中间也是回文字符串

AC代码

class Solution {
    public int longestPalindrome(String s) {
        boolean[] map = new boolean[128];
        int ret = 0;

        for(int i = 0; i < s.length(); i++) {
            map[s.charAt(i)] = !map[s.charAt(i)];

            if(!map[s.charAt(i)])
                ret += 2;
        }

        if(ret < s.length())
            ret += 1;
        return ret;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值