AtCoderの過去問対策です。ABCで解けなかった問題、ためになった問題のコードを備忘録として残します。
問題
解説
https://img.atcoder.jp/data/arc/060/editorial.pdf
解答例
#include <bits/stdc++.h> using namespace std; int main(){ string w; cin >> w; bool isEven = true; vector<int> counter(26, 0); for(int i = 0, len = w.size(); i < len; i++){ // cout << w.at(i)-'a'; aと何文字違いか差分を出す counter.at(w.at(i)-'a')++; } for(int i = 0, len = counter.size(); i < len; i++){ if(counter.at(i) % 2 != 0){ isEven = false; break; } } if(isEven) cout << "Yes\n"; else cout << "No\n"; }
メモ
各英小文字 (‘a’–‘z’) ごとに,以下を行えばよい.
- w 中における出現回数を数える.
- vector
counter(26, 0); → { 0, 0, ..., 0, 0 }; - 英文字数分の配列を用意する。
- vector
- 出現回数が奇数か偶数かを判定する.