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