文字列の部分文字列を取得する関数 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; }