文字列の練習!
問題概要
英大文字のみからなる、長さ の文字列
が与えられる。
の末尾の文字が '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; } }