感冒了,好可怜。。
回文除了最中间的必须成对出现,so..统计一下每个字母的数量,不成对的只有1个有用,其余舍弃就行了。。。
public class Solution
{
public int longestPalindrome(String s)
{
if(s.length() <= 1) return s.length();
int[] letters = new int[100];
for(int i = 0; i < s.length();i++)
{
letters[s.charAt(i) - 'A']++;
}
int res = 0;
boolean found = false;
for(int i = 0; i < 100;i++)
{
if(letters[i] % 2 == 0) res+=letters[i];
else
{
if(found) res+= letters[i]-1;
else
{
res += letters[i];
found = true;
}
}
}
return res;
}
}
一刷写了些屎。
public class Solution {
public int longestPalindrome(String s) {
int[] letters = new int[256];
for (char c: s.toCharArray()) {
letters[c]++;
}
boolean single = false;
int res = 0;
for (int i: letters) {
if (i % 2 == 0) {
res += i;
} else {
if (!single) {
single = true;
res += i;
} else {
res += i - 1;
}
}
}
return res;
}
}