le : 1
el: 3
min(3,1)*4 и больше эти пары не трога
class Solution {
public:
int longestPalindrome(vector<string>& words) {
int result = 0;
bool has_single = false;
map<string, int>all_words;
for(int i = 0; i < words.size();i++){
auto it = all_words.find(words[i]);
if(it == all_words.end())
all_words.insert(make_pair(words[i], 1));
else
(it->second)++;
}
for(auto it = all_words.begin(); it != all_words.end();it++){
string rev = it->first;
std::reverse(rev.begin(), rev.end());
auto it_rev = all_words.find(rev);
if(it_rev != all_words.end()){
if(it_rev == it && it->second % 2 != 0){
if(!has_single){
has_single = true;
}
else{
result-=2;
}
}
result += min(it->second, it_rev->second) * 2;
}
}
return result;
}
};
чуть чуть правда намудрил
но работает)