文字列の大文字・小文字変換もできるようにしていきたい。
問題概要
英大文字または英小文字からなる文字列 が与えられる。
大文字の個数が小文字の個数よりも多い場合は、すべて大文字に変換し、そうでない場合はすべて小文字に変換して出力せよ。
考えたこと
まずは普通に、英大文字の個数と、英小文字の個数を数えた。それをもとに、処理を分岐した。
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; int N = S.size(); int ko = 0; for (auto c : S) { if (c >= 'a' && c <= 'z') ++ko; } int oo = N - ko; if (oo > ko) { for (int i = 0; i < N; ++i) { if (S[i] >= 'a' && S[i] <= 'z') S[i] += (int)('A') - 'a'; } } else { for (int i = 0; i < N; ++i) { if (S[i] >= 'A' && S[i] <= 'Z') S[i] -= (int)('A') - 'a'; } } cout << S << endl; }