lintCode627:最长回文串

本文介绍了一种用于计算给定字符串中能构建的最长回文串长度的算法。通过统计字符出现次数并利用回文串特性,该算法能够有效地找出最长回文串的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Solution {
    /*
     * @param s: a string which consists of lowercase or uppercase letters
     * @return: the length of the longest palindromes that can be built
     */
    public int longestPalindrome(String s) {
        // write your code here
        int size = 0 ;
        int max = 0;
        char[] charArr = s.toCharArray();
        int count[] = new int[128];
       //将所有字符串中的字符存入字符数组当中
     for(int i=0;i<charArr.length;i++){
            count[charArr[i]]++;
        }
       //遍历
        for(int i=0;i<128;i++){
        //由回文串的特点可知,为偶肯定可以当回文串元素
          if(count[i]%2==0){
                size += count[i];
            }
           //判断,如果比记录的max大,则加入前max-1的子串长度,否则直接加入
           else if(count[i]%2!=0&&count[i]>max){
                if(max!=0)
                size  = size + max -1;
                max = count[i];
            }else{
                size +=count[i]-1;
            }
        }
        
        return size+max;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值