#33235: 小參考


jasperlin0108@gmail.com (Jasper Lin)

學校 : 高雄市立高雄高級中學
編號 : 169403
來源 : [114.40.142.198]
最後登入時間 :
2023-10-05 16:52:06
a224. 明明愛明明 | From: [114.40.143.185] | 發表日期 : 2022-12-14 22:32

#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都可以。

 

 
ZeroJudge Forum