Leetcode——409. Longest Palindrome

xiaoxiao2021-02-28  30

题目原址

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; } }
转载请注明原文地址: https://www.6miu.com/read-2800139.html

最新回复(0)