けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 224 A - Tires (8Q, 灰色, 100 点)

文字列を上手に使う練習

問題概要

末尾が "er" か "ist" であるような文字列  S (2 文字以上) が与えられます。

どちらであるかを判定してください。

解法

末尾が "er" であるかどうかを判定することにしよう。文字列 S の長さを N とするとき、

  • S の末尾の文字は S[N - 1]
  • S の末尾から 2 文字目の文字は S[N - 2]

であることから、末尾が "er" であるかどうかは、次のように判定できる。

if (S[N - 1] == 'r' && S[N - 2] == 'e')

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    int N = (int)S.size();
    if (S[N-1] == 'r'&& S[N-2] == 'e')
        cout << "er" << endl;
    else
        cout << "ist" << endl;
}

 

別解

与えられる文字列は末尾が "er" か "ist" であることが保証されているのだから、実は「末尾の文字が 'r' であるかどうか」のみを判定すれば OK

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    if (S.back() == 'r')
        cout << "er" << endl;
    else
        cout << "ist" << endl;
}