AtCoder Beginner Contest 167 A Ich werde das Problem "Registrierung" erklären.
Problem-URL: https://atcoder.jp/contests/abc167/tasks/abc167_a
Angesichts der Zeichenfolgen $ S $, $ T $. Bestimmen Sie, ob $ T $ eine Zeichenfolge ist, bei der ein Zeichen am Ende von $ S $ hinzugefügt wird.
Ja
wenn $ T $ die Bedingungen erfüllt
Wenn die Bedingungen nicht erfüllt sind, geben Sie "Nein" aus.
・ $ S und T $ sind niedrigere alphabetische Zeichenfolgen
・
String
In Python3 können Sie T [i: j + 1]
verwenden, um das Slice </ b> vom $ i $ -Zeichen zum $ j $ -Zeichen von $ T $ zu erhalten.
(beachten Sie, dass es sich hier um einen 0-Index handelt) </ font>
Auf Computern beginnen Nummernzähler bei 0 statt bei 1. Die Zeichenfolgen, die wir verarbeiten, werden also vom ersten Zeichen für uns, aber vom 0. Zeichen für den -Computer gezählt. </ b> Die Methode zum Zählen von computerähnlichen Arrays (einschließlich Zeichenfolgen) wird als 0-Index </ b> bezeichnet. Andererseits wird die Art und Weise, wie wir normalerweise Sequenzen zählen, als 1-Index </ b> bezeichnet. Beachten Sie, dass es in Zukunft häufig in den Erläuterungen verwendet wird.
Kommen wir zurück zum Hauptthema. In C ++ können Sie "T.strstr (i, j)" verwenden, um Slices </ b> von $ j $ Zeichen aus dem $ i $ -ten von $ T $ zu erhalten. (i ist 0-Index) In Java kann "T.string (i, j + 1)" verwendet werden, um Slices </ b> von $ i $ th bis $ j $ th von $ T $ zu erhalten. (i, j sind 0-Index)
Mit diesen Funktionen können Sie ein Slice von $ T $ abrufen und feststellen, ob es mit $ S $ identisch ist.
Nachfolgend finden Sie Beispiele für Antworten in Python3, C ++ und 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");
}
}
}
Wenn ich diesen Code ausführe, erhalte ich tatsächlich WA </ font>. Weißt du warum (wenn du weißt)?
Wenn Sie den Grund wissen möchten, überprüfen Sie es bitte.
Der richtige Antwortcode lautet wie folgt.
{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");
}
}
}