文字列を上手に使う練習
問題概要
末尾が "er" か "ist" であるような文字列 (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; }