• 最长回文数


    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12523816.html

    最长回文数(50min)

    题目链接:https://leetcode-cn.com/problems/longest-palindrome/

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

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

    注意:
    假设字符串的长度不会超过 1010。

    示例 1:

    输入:
    "abccccdd"
    
    输出:
    7
    
    解释:
    我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
    题解:
    方法:判断字符串中偶数字母和奇数字母。
    思路:
    此题需要考虑好几种情况:
    1.字符串中是偶数的字母个数一定可以组成回文数。
    2.字符串中是奇数个数字母分两种情况:
    1)只有一个字母,可以把单独一个字母放在回文数中间。这种情况时,判断完偶数字母后,最后加上1即为总的回文数。
    2)字母个数为奇数时,其中的偶数个一定可以组成回文数。这种情况时,奇数个数减1即为偶数个数。
    3.字符串长度为0,不能组成回文数。
    注意:
    1.题目区分大小写字母。
    2.因为字母个数为奇数时,不知道是奇数是由字符串中只有一个字母得来的,还是字符串中只有一个字母且为奇数个数例如aaa,这两种情况,最后结果都需要加1,所以一个flag变量,当出现这两种情况时,把flag赋值为1,最后判断,如果flag=1时,最后结果才加1.
    代码如下:
    class Solution {
        public int longestPalindrome(String s) {
            int [] str=new int [52];
            for(int i=0;i<s.length();i++)//统计字符串中的字母个数
            {
                char cha=s.charAt(i);
                if(cha>='a'&&cha<='z')
                    str[cha-'a']++;
                else 
                     str[cha-'A'+26]++;
            }
            int flag=0;
            int count=0;
            for(int i=0;i<52;i++)
            {
                if(str[i]==1)
                   flag=1;
                else if(str[i]==0)
                    continue;
                else 
                {
                    if(str[i]%2==0)
                        count+=str[i];
                    else 
                    {
                        count+=str[i]-1;
                        flag=1;
                    }
                }
            }
            if(flag==1)
                count++;
            return count;
    
        }
    }
               
  • 相关阅读:
    0Day – 2011.1.20[From B4A]
    0Day – 2011.1.16[From B4A]
    ubuntu 桌面下方的面板(任务栏)恢复方法
    Delphi WebBrowser用法几则浅谈
    0Day – 2011.1.3[From B4A]
    0Day – 2011.1.8[From B4A]
    0Day – 2011.1.6[From B4A]
    0Day – 2011.1.10[From B4A]
    0Day – 2011.01.21[From B4A]
    0Day – 2011.1.7[From B4A]
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12523816.html
Copyright © 2020-2023  润新知