Official

B - Prefix? Editorial by leaf1415


\(S\) の長さ \(|S|\)\(T\) の長さ \(|T|\) より長い場合は、 \(S\)\(T\) の接頭辞とはなり得ないため、答えは No です。 以下、\(|S| \leq |T|\) とします。

\(S\)\(T\) の接頭辞であることは、\(S\)\(T\) の先頭 \(|S|\) 文字と等しいこと等価です。 よって、\(S = S_1S_2\ldots S_{|S|}\)\(T = T_1T_2\ldots T_{|T|}\) の接頭辞かを調べるには、 すべての \(i = 1, 2, \ldots, |S|\)\(S_i = T_i\) が成立しているかを調べれば良いです。

「すべての \(i\) 」を走査するのには、プログラミング言語の標準的な機能である繰り返しの機能( for 文など)を用いることができます。

使用するプログラミング言語によっては、 文字列の \(1\) 文字目が \(1\) ではなく \(0\) で添字づけされていることに注意してください。

以下に、C++ 言語による本問題の正解例を記載します。

#include <iostream>
using namespace std;

int main(void)
{
  string s, t;
  cin >> s >> t;
  
  if(s.size() > t.size()){
    cout << "No" << endl;
    return 0;
  }
  
  for(int i = 0; i < (int)s.size(); i++){
    if(s[i] != t[i]){
      cout << "No" << endl;
      return 0;
    }
  }
  cout << "Yes" << endl;
  
  return 0;
}

posted:
last update: