実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 26
問題概要
英大文字と英小文字からなる長さが奇数の文字列 が与えられる。
に含まれる大文字の個数が小文字の個数よりも多ければ、
に含まれる全ての小文字を大文字に変換せよ。そうでない場合は、
に含まれる全ての大文字を小文字に変換せよ。
制約
の長さは
以上
以下。
考察
問題文の指示通りにやるだけ。 C++ では、英字が大文字であるか小文字であるかはisupper()
, islower()
が、大文字への変換はtoupper()
、小文字への変換はtolower()
を用いればよい。
コード
#include <bits/stdc++.h> using namespace std; #define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++) // ======================================== // int main() { string S; cin >> S; int upper = 0, lower = 0; rep(i, 0, S.size()) { if (isupper(S[i])) upper++; else lower++; } if (upper > lower) { rep(i, 0, S.size()) S[i] = toupper(S[i]); } else { rep(i, 0, S.size()) S[i] = tolower(S[i]); } cout << S << endl; }
実装時間: 5分以内