AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)

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

Résumé du problème

É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».

Contrainte

・ $ S et T $ sont des chaînes alphabétiques inférieures ・1 \leq |S| \leq 10|T| = |S| + 1

Commentaire

ChaîneTsur,|S|À la lettretrancheEt c'estSIl vous suffit de déterminer s'il est égal à. Ici, slice </ b> fait référence à une partie de la chaîne de caractères.

Comment obtenir des tranches

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>

[Colonne] Que sont 0-index et 1-index? </ 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.

Exemple de réponse pour chaque langue

Exemple de solution en Python3

{ABC167A.py}


S = input()
T = input()
if T[0:len(S)] == S:
  print("Yes")
else:
  print("No")
Exemple de solution en C ++

{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;
  }
}
Exemple de réponse Java

{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