文字列の部分文字列を取得する関数 substr()
(C++) を用いるか、for
文で書こう。
問題概要
文字列 "atcoder" について、 文字目から 文字目までを出力せよ。
制約
解法 (1):関数 substr()
を使う。
文字列 S
に対して、
S.substr(i, l)
は、文字列 S
の 番目の文字 S[i]
から開始して 文字分を取得する処理を表す。たとえば、S = "atcoder"
として、
S.substr(0, 2)
= "at"S.substr(1, 3)
= "tco"S.substr(4, 1)
= "d"
である。(ただし、 番目の文字から見て 文字分存在しない場合は、終端までの文字を取得する)。
今回の問題設定に戻ろう。取得したい部分文字列の長さは であることに注意しよう。よって、求める文字列は、S = "atcoder"
として、
S.substr(L - 1, R - L + 1)
と表せる。なお、ここで、C++ では通常 0-indexed で考えるため、 文字目は S[L - 1]
であることに注意しよう。
コード
#include <bits/stdc++.h> using namespace std; int main() { int L, R; cin >> L >> R; string S = "atcoder"; cout << S.substr(L - 1, R - L + 1) << endl; }
解法 (2):for
文を用いる
for
文を用いて、文字列 = "atcoder" の 文字目から 文字目までを出力してもよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { int L, R; cin >> L >> R; string S = "atcoder"; for (int i = L - 1; i <= R - 1; ++i) cout << S[i]; cout << endl; }