引き続き、B問題を解いていきます。今回はABC B053 – A to Z Stringだけです。
ABC B053 – A to Z String
問題
すぬけくんは文字列sの連続した一部分(部分文字列という)を取り出して先頭がA
であり末尾がZ
であるような文字列を作ることにしました。 すぬけくんが作ることのできる文字列の最大の長さを求めてください。 なお、sには先頭がA
であり末尾がZ
であるような部分文字列が必ず存在することが保証されます。
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main () {
string s;
cin >> s;
int A_num, Z_num;
for (int i = 0; i < s.length(); i++){
if(s[i] == 'A'){
A_num = i;
break;
}
}
for (int i = 0; i < s.length(); i++){
if(s[i] == 'Z'){
Z_num = i;
}
}
cout << Z_num - A_num + 1 << endl;
}
A_num、Z_numはAとZが何文字目かの数値が入ります。
一文字ずつ取り出して、Aだった場合、A_numに何文字目かの値が入ります。そして、Aの場合、先頭のAだけ確認すればいいので、最初にAが見つかった時にbreakしてforループを抜けます。
次にZです。Zの場合は、最後に出てきたZの位置が必要なので、最後までループを回します。
そして、A_num、Z_numを引いて、1を足したものが答えになります。文字数なので、1を足すのを忘れずに。