AtCoder Beginner Contest 167 A Je vais vous expliquer le problème "Inscription".
URL du problème: https://atcoder.jp/contests/abc167/tasks/abc167_a
Étant donné les chaînes $ S $, $ T $. Détermine si $ T $ est une chaîne avec un caractère ajouté à la fin de $ S $.
"Oui" si $ T $ remplit les conditions Si les conditions ne sont pas remplies, indiquez «Non».
・ $ S et T $ sont des chaînes alphabétiques inférieures
・
Chaîne
En Python3, vous pouvez utiliser T [i: j + 1] pour obtenir la  tranche </ b> du caractère $ i $ au caractère $ j $ de $ T $.
 (notez qu'il s'agit d'un index 0 ici) </ font>
Sur les ordinateurs, les compteurs de nombres commencent à 0 au lieu de 1. Ainsi, les chaînes que nous traitons sont comptées à partir du premier caractère pour nous, mais du 0ème caractère pour l'ordinateur . </ b> La méthode de comptage des tableaux de type ordinateur (y compris les chaînes de caractères) est appelée 0-index </ b>. D'un autre côté, la façon dont nous comptons habituellement les séquences est appelée 1-index </ b>. Gardez à l'esprit qu'il sera fréquemment utilisé dans les explications à l'avenir.
Revenons au sujet principal.
En C ++, vous pouvez obtenir des  tranches </ b> de $ j $ caractères à partir de $ i $ th de $ T $ avec T.substr (i, j). (i est un indice 0)
En Java, T.substring (i, j + 1) peut être utilisé pour obtenir des  tranches </ b> de $ i $ th à $ j $ th de $ T $. (i, j sont 0-index)
Vous pouvez utiliser ces fonctions pour obtenir une tranche de $ T $ et déterminer si elle est identique à $ S $.
Vous trouverez ci-dessous des exemples de réponses en Python3, C ++ et Java.
{ABC167A.py}
S = input()
T = input()
if T[0:len(S)] == S:
  print("Yes")
else:
  print("No")
{ABC167A.cpp}
#include<bits/stdc++.h>
using namespace std;
int main(){
  string S,T;
  cin >> S >> T;
  string Judge = T.substr(0,S.size());
  if (Judge == S){
    cout << "Yes" << endl;
  }else{
    cout << "No" << endl;
  }
}
{ABC167A.java}
import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String S = scan.nextLine();
    String T = scan.nextLine();
    String judge = T.substring(0,S.length());
    if (judge == S){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }
  }
}
En fait, lorsque j'exécute ce code, j'obtiens WA </ font>. Savez-vous pourquoi (si vous savez)?
Si vous voulez en connaître la raison, veuillez la vérifier.
Le code de réponse correct est le suivant.
{ABC167A_AC.java}
import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String S = scan.next();
    String T = scan.next();
    String judge = T.substring(0,S.length());
    if (S.equals(judge)){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }
  }
}
Recommended Posts