[题记]最长回文串-leetcode
题目:最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa"
不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例 1:
输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
思想:
- 记录串中的所有字母的个数,所有字母只取它的偶数次
- 如果最后的出来的长度 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