[题记]最长回文串-leetcode

题目:最长回文串

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

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

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

示例 1:

输入:
"abccccdd"

输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。


思想:
  1. 记录串中的所有字母的个数,所有字母只取它的偶数次
  2. 如果最后的出来的长度 ans < 原来的串的长度len 那么就让ans+1,否则输出ans

代码(c):

int longestPalindrome(char * s) {

    int number[60] = {0};
    int len = strlen(s);
    int ans = 0;
    
    for( int i = 0; i < len; i++ ) {

        number[s[i]-'A'] += 1;//统计字母个数
    }
    for( int i = 0; i < 60; i++ ) {

        ans += number[i] - number[i]%2;//统计回文串长度
    }
    
    return ans < len ? ans+1 : ans;//输出
}

2020-03-19-14:19:02

posted @ 2020-03-19 14:20  橙橙橙澄xs  阅读(135)  评论(0编辑  收藏  举报