美文网首页
409.最长回文串

409.最长回文串

作者: 水中的蓝天 | 来源:发表于2022-08-14 00:00 被阅读0次

409. 最长回文串

给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。
在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。

示例.png

/**
 思路:
 遍历字符数组 一个字符每出现2次就重置其出现次数 同时让最长回文串长度 +2
 遍历字符次数数组 发现一个出现一次的就停止遍历 并让最长回文串长度 +1 ,此时就得到了最终最长回文子串的长度
 */
class Solution {
    public int longestPalindrome(String s) {
        
        //0.定义需要的数据结构
        int[] charNums = new int[128];
        char[] charArray = s.toCharArray();
        int length=0;

        for (char c : charArray) {
            //字符出现就++
            charNums[c]++;
            if (charNums[c] == 2) {//一个字符出现2次了 重置为0
                charNums[c] = 0;
                length += 2; //最大长度加2
            }
        }
        
        for (int charNum : charNums) {
            //有一个字符出现了一次 对构成回文串的长度加一 并退出  aacbb
            if(charNum==1){
                length++;
                break;
            }
        }
        return length;
    }
}

/**
 思路:天天爱消除
 回文是成对出现的 利用结合去重,最后剩下的就是出现次数为奇数的字符
 */
class Solution1 {
    public int longestPalindrome(String s) {

        Set<Character> set = new HashSet<>();
        //1.消除出现次数是偶数的字符
        for (int i = 0; i < s.length(); i++) {
            if (!set.remove(s.charAt(i))) {
                set.add(s.charAt(i));
            }
        }
    
        /**
        2.
        集合为空就表示整个字符串是回文串 
        不为空就减去集合元素个数加上一, 加一是因为添加一个字符放在最中间依然是回文串
        */
        return set.isEmpty() ? s.length() : s.length() - set.size() + 1;

    }
}


相关文章

  • 409.最长回文串

    409. 最长回文串[https://leetcode.cn/problems/longest-palindrom...

  • 关于回文问题

    回文问题的解法:双指针,栈,reverse 1. 409. 最长回文串[✔]2. 125. 验证回文串[✔]3. ...

  • 手撕LeetCode #409——Python

    409. 最长回文串[https://leetcode-cn.com/problems/longest-palin...

  • Leetcode 409 最长回文串

    409. 最长回文串[https://leetcode-cn.com/problems/longest-palin...

  • Leetcode409最长回文串--Python3

    409. 最长回文串 难度简单 解答: 语言:python 用字典进行统计长度,回文字符串的长度= 偶数个字符长度...

  • 409. 最长回文串

    题目描述 409. 最长回文串 思路 题目不难,就是所有的坑我都踩进去了。"abccccdd" -> a: 1, ...

  • 409. 最长回文串

    内容 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小...

  • 409. 最长回文串

    题目 我刚开始的想法 因为题目要求的是输出长度,并不需要将最长的回文字串数出来,所以很显然是一道找规律的题目,回文...

  • 409. 最长回文串

    解题思路 既然是求最长回文串,那么左右字符个数应该对称。对于偶数个字符来说,正好可以左右排列;而对于奇数个字符来说...

  • 409. 最长回文串

网友评论

      本文标题:409.最长回文串

      本文链接:https://www.haomeiwen.com/subject/wfycgrtx.html