文字列の練習!
問題概要
英大文字のみからなる、長さ の文字列 が与えられる。
- の末尾の文字が 'G' 以外のとき: の末尾に文字 'G' を挿入して得られる文字列を
- の末尾の文字が 'G' であるとき: の末尾の文字 'G' を削除して得られる文字列を
求めて出力せよ。
解法
文字列 を C++ の string
型の変数 S
で表すことにしよう。このとき、 の末尾の文字は S.back()
で取得できる。
この文字が G
かどうかを調べて、if
文を用いて処理を分岐しよう。
S.back() != 'G'
のとき
この場合は、S + 'G'
を出力すれば OK。
そうでないとき
この場合は、S
から末尾の文字を削除して得られる文字列を出力すればよい。文字列 の末尾の文字を削除する処理は S.pop_back()
と書ける。
C++ での解答例
#include <bits/stdc++.h> using namespace std; int main() { int N; string S; cin >> N >> S; if (S.back() != 'G') { // S の末尾の文字が 'G' でないとき:S + 'G' を出力 cout << S + 'G' <<endl; } else { // S の末尾の文字が 'G' であるとき:S の末尾の文字を削除する S.pop_back(); cout << S << endl; } }