LeetCode:409、最长回文串

题目:

在这里插入图片描述

解题思路:

先记录每个字符出现的次数;
然后除2在乘2;奇数次则会取最大偶数次;偶数次则不变;
然后判断是否存在奇数次的字符;若存在且结果为偶数个字符,则结果加1
然后将这个字符数组置0(必须置0);

源码:

int longestPalindrome(char * s){
    int res = 0;
    int count[128] = {0};
    for(int i=0;i<strlen(s);i++)
        count[s[i]] ++;
    for(int i=0;i<strlen(s);i++){
        res +=  count[s[i]] / 2 * 2;
        if(count[s[i]] % 2 !=0 && res % 2 == 0)
            res ++;
        count[s[i]] = 0;
    }
    return res;
}

踩坑点:

我们希望的情况是每个字符有一个数组,这个数组记录着字符出现的次数
但是在第二次循环中有8个数组,同一字符的数组会重复出现字符个数次;

在这里插入图片描述
所以我们在第一次判断并加入结构之后必须要将这个字符所对应重复出现的剩下全部数组置0;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值