#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
vector<int> v;
string s;
int sum;
while(cin>>s){
v.clear();
v.resize(26,0);
for(int i=0;i<s.length();i++){
if(s[i]>=65 && s[i]<=90){
v[s[i]-65]^=1;
}
else if(s[i]>=97 && s[i]<=122){
v[s[i]-97]^=1;
}
}
sum=0;
for(int i=0;i<v.size();i++){
sum+=v[i];
}
if(sum==1 || sum==0){
cout<<"yes !\n";
}
else{
cout<<"no...\n";
}
}
return 0;
}
想法:用vector紀錄26個字母分別出現的次數(又因為要回文,每兩個可以消掉)
註:第17和20行的^是xor運算,可以讓1變0,0變1,也就是兩個消掉。然後如果只多出一個字母,那它可以擺中間。所以27行的0和1都可以。