Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 1.49 KB

409.最长回文串.md

File metadata and controls

83 lines (66 loc) · 1.49 KB

409. 最长回文串

url

题目

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

输入:
"abccccdd"
输出:
7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

方法

提示:分析回文串的特征

code

js

let longestPalindrome = s => {
    let cnts = Array(256).fill(0);
    s = s.split("");
    s.forEach(c => cnts[c.charCodeAt(0)]++);
    let palindrome = 0;
    cnts.forEach(cnt => palindrome += Math.floor(cnt / 2) * 2);
    if (palindrome < s.length)
        palindrome++;
    return palindrome;
};
console.log(longestPalindrome("abccccdd"))

go

func longestPalindrome(s string) int {
	cnts := make([]int, 256)
	for _, c := range s {
		cnts[c]++
	}
	palindrome := 0
	for _, cnt := range cnts {
		palindrome += (cnt / 2) * 2
	}
	if palindrome < len(s) {
		palindrome++
	}
	return palindrome
}

java

class Solution {
    public int longestPalindrome(String s) {
        int[] cnts = new int[256];
        for (char c : s.toCharArray()) {
            cnts[c]++;
        }
        int palindrome = 0;
        for (int cnt : cnts) {
            palindrome += (cnt / 2) * 2;
        }
        if (palindrome < s.length()) {
            palindrome++;
        }
        return palindrome;
    }
}