zoukankan      html  css  js  c++  java
  • LeetCode

    链接

    409. Longest Palindrome

    题意

    给定一个包含大小写的字符串,计算这些字母能组成的最长的回文串的长度。

    样例

    Input:
    "abccccdd"

    Output:
    7

    Explanation:
    One longest palindrome that can be built is "dccaccd", whose length is 7.

    思路

    将每个字母转为数字作为数组下标,值为出现的次数。次数大于等于2的偶数部分即可构成回文串的一部分。此时注意,若字符串中至少存在一个奇数次数字母,则回文串的长度可加1(作为中间字母)

    代码

    Java:

    public class Solution {
        public int longestPalindrome(String s) {
            // 大小写共52个
            int[] arr = new int[52];
            // 记录偶数字母个数
            int count = 0;
            // 记录奇数字母个数
            int single = 0;
            for (int i = 0; i < s.length(); i++) {
                // 若为大写字母
                if (s.charAt(i) < 'Z') {
                    // 下标从26开始
                    arr[s.charAt(i) - 'A' + 26]++;
                } else {
                    // 小写字母下标从0开始
                    arr[s.charAt(i) - 'a']++;
                }
            }
            for (int i = 0; i < arr.length; i++) {
                count += arr[i] / 2;
                single += arr[i] % 2;
            }
            return single > 0 ? count * 2 + 1 : count * 2;
        }
    }
    
    
  • 相关阅读:
    HDU_3496_(二维费用背包)
    HDU_3732_(多重背包)
    HDU_2079_(01背包)(dfs)
    HDU_2844_(多重背包)
    Codeforces_766_D_(并查集)
    HDU_3591_(多重背包+完全背包)
    struts2标签
    ongl 表达式
    result 相关
    struts2页面输出错误信息
  • 原文地址:https://www.cnblogs.com/zyoung/p/6860167.html
Copyright © 2011-2022 走看看