刷完LeetCode题库——409. 最长回文串

101 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情

题目详情

LeetCode题库序号 409. 最长回文串 ,难度为 简单

Tag : 「贪心」

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

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

示例 1:

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

示例 2:

输入: s = "a"
输入: 1

提示:

  • 1 <= s.length <= 2000
  • s 只由小写 和/或 大写英文字母组成

贪心

题解思路:通过给定的字符串,我们需要使用它来组成我们的最长回文串,回文串就是从左往右读或者是从右往左读,它们的字符都是一致的,那么我们就可以得知,其实字符的数量是需要偶数个的,假设说存在奇数个的字符的话,我们在判断当前的回文串是否为偶数个,如果是的话,那么返回的ans就可以累加上1。根据贪心的机制我们可以得到对应的答案。详情见以下代码: 题解代码

/**
 * Solution操作类
 *
 * @author JackPan
 * @date 2022/08/25 22:21
 **/
public class Solution {

    public int longestPalindrome(String s) {
        int[] count = new int[128];
        for (int i = 0; i < s.length(); i++) {
            count[s.charAt(i)] ++;
        }

        int ans = 0;
        for (int num : count) {
            ans += num / 2 * 2;
            if (num % 2 != 0 && ans % 2 != 0) {
                ans++;
            }
        }

        return ans;
    }

}

结尾

我的"刷完LeetCode题库"系列文章的第 No.409 序号的题目,本次刷题之旅系列开始于 2022-06-12,因为LeetCode上部分是有锁题,我自己的目标是将先把所有不带锁的题目刷完。自己能够通过这次刷题之旅勉励自己,并且提升逻辑思维能力。这个系列的文章就是会见证我自己的一个成长过程!

思路虽然不是最优的,但是我会尽我所能!

为了让我自己的刷题之旅不中断,我特地建立了相关的仓库,来记录我自己的刷题之旅。 github.com/jackpan123/…