元Webデザイナー兼コーダーの備忘録

学びを形に:プログラミングとウェブデザインの勉強メモ

 メニュー

» Processingの記事一覧はこちらです。

AtCoder|ABC044:B - 美しい文字列

AtCoderの過去問対策です。ABCで解けなかった問題、ためになった問題のコードを備忘録として残します。

問題

B - Beautiful Strings

解説

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’) ごとに,以下を行えばよい.

  1. w 中における出現回数を数える.
    • vector counter(26, 0); → { 0, 0, ..., 0, 0 };
    • 英文字数分の配列を用意する。
  2. 出現回数が奇数か偶数かを判定する.

» HTML|入門ガイドはこちらです。