[AtCoder]ABC B053 – A to Z String [C++]

プログラミング


引き続き、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を足すのを忘れずに。

タイトルとURLをコピーしました